Voici ce que j'ai fait dans un projet précédent, qui nécessitera l'édition manuelle du (des) fichier (s) .csproj. Vous avez également besoin de répertoires séparés pour les différents binaires, idéalement frères les uns des autres, et portant le même nom que la plate-forme que vous ciblez.
Après avoir ajouté les références d'une seule plateforme au projet, ouvrez le .csproj dans un éditeur de texte. Avant le premier <ItemGroup>
élément de l' <Project>
élément, ajoutez le code suivant, qui vous aidera à déterminer sur quelle plate-forme vous exécutez (et construisez).
<!-- Properties group for Determining 64bit Architecture -->
<PropertyGroup>
<CurrentPlatform>x86</CurrentPlatform>
<CurrentPlatform Condition="'$(PROCESSOR_ARCHITECTURE)'=='AMD64' or '$(PROCESSOR_ARCHITEW6432)'=='AMD64'">AMD64</CurrentPlatform>
</PropertyGroup>
Ensuite, pour les références spécifiques à votre plate-forme, vous apportez des modifications telles que les suivantes:
<ItemGroup>
<Reference Include="Leadtools, Version=16.5.0.0, Culture=neutral, PublicKeyToken=9cf889f53ea9b907, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\Lib\Leadtools\$(CurrentPlatform)\Leadtools.dll</HintPath>
</Reference>
<Reference Include="Leadtools.Codecs, Version=16.5.0.0, Culture=neutral, PublicKeyToken=9cf889f53ea9b907, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\Lib\Leadtools\$(CurrentPlatform)\Leadtools.Codecs.dll</HintPath>
</Reference>
<Reference Include="Leadtools.ImageProcessing.Core, Version=16.5.0.0, Culture=neutral, PublicKeyToken=9cf889f53ea9b907, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\Lib\Leadtools\$(CurrentPlatform)\Leadtools.ImageProcessing.Core.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Data.Entity" />
<!-- Other project references -->
</ItemGroup>
Notez l'utilisation de la $(CurrentPlatform)
propriété, que nous avons définie ci-dessus. Vous pouvez, à la place, utiliser des conditions pour les assemblys à inclure pour quelle plateforme. Vous pourriez également avoir besoin de:
- Remplacez
$(PROCESSOR_ARCHITEW6432)
et $(PROCESSOR_ARCHITECTURE)
par $(Platform)
pour considérer UNIQUEMENT la plateforme cible des projets
- Modifiez la logique de détermination de la plate-forme afin qu'elle soit appropriée à la machine actuelle, afin de ne pas créer / référencer un binaire 64 bits à exécuter sur une plate-forme 32 bits.
Je l'avais écrit à l'origine pour un Wiki interne au travail, cependant, je l'ai modifié et posté le processus complet sur mon blog , si vous êtes intéressé par les instructions détaillées étape par étape.