Esto es lo que hice en un proyecto anterior, que requerirá la edición manual de los archivos .csproj. También necesita directorios separados para los diferentes binarios, idealmente hermanos entre sí, y con el mismo nombre que la plataforma a la que se dirige.
Después de agregar referencias de una sola plataforma al proyecto, abra el archivo .csproj en un editor de texto. Antes del primer <ItemGroup>
elemento dentro del <Project>
elemento, agregue el siguiente código, que ayudará a determinar en qué plataforma está ejecutando (y construyendo).
<!-- Properties group for Determining 64bit Architecture -->
<PropertyGroup>
<CurrentPlatform>x86</CurrentPlatform>
<CurrentPlatform Condition="'$(PROCESSOR_ARCHITECTURE)'=='AMD64' or '$(PROCESSOR_ARCHITEW6432)'=='AMD64'">AMD64</CurrentPlatform>
</PropertyGroup>
Luego, para las referencias específicas de su plataforma, realice cambios como los siguientes:
<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>
Tenga en cuenta el uso de la $(CurrentPlatform)
propiedad, que definimos anteriormente. En su lugar, podría usar condicionales para qué conjuntos incluir para qué plataforma. También podría necesitar:
- Reemplace la
$(PROCESSOR_ARCHITEW6432)
y $(PROCESSOR_ARCHITECTURE)
con $(Platform)
tener en cuenta sólo la plataforma de destino de los proyectos
- Modifique la lógica de determinación de la plataforma para que sea apropiada para la máquina actual, de modo que no esté construyendo / haciendo referencia a un binario de 64 bits para ejecutar en una plataforma de 32 bits.
Tenía esto escrito originalmente para un Wiki interno en el trabajo, sin embargo, lo modifiqué y publiqué el proceso completo en mi blog , si está interesado en las instrucciones detalladas paso a paso.