Folgendes habe ich in einem früheren Projekt getan, für das die manuelle Ausgabe der .csproj-Datei (en) erforderlich ist. Sie benötigen außerdem separate Verzeichnisse für die verschiedenen Binärdateien, idealerweise Geschwister voneinander, und mit demselben Namen wie die Plattform, auf die Sie abzielen.
Öffnen Sie nach dem Hinzufügen der Referenzen einer einzelnen Plattform zum Projekt die .csproj in einem Texteditor. Fügen Sie vor dem ersten <ItemGroup>
Element innerhalb des <Project>
Elements den folgenden Code hinzu, um festzustellen, auf welcher Plattform Sie ausgeführt werden (und auf welcher Sie aufbauen).
<!-- Properties group for Determining 64bit Architecture -->
<PropertyGroup>
<CurrentPlatform>x86</CurrentPlatform>
<CurrentPlatform Condition="'$(PROCESSOR_ARCHITECTURE)'=='AMD64' or '$(PROCESSOR_ARCHITEW6432)'=='AMD64'">AMD64</CurrentPlatform>
</PropertyGroup>
Anschließend nehmen Sie für Ihre plattformspezifischen Referenzen Änderungen vor, z. B. die folgenden:
<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>
Beachten Sie die Verwendung der $(CurrentPlatform)
Eigenschaft, die wir oben definiert haben. Sie können stattdessen Bedingungen verwenden, für die Assemblys für welche Plattform eingeschlossen werden sollen. Möglicherweise müssen Sie auch:
- Ersetzen Sie das
$(PROCESSOR_ARCHITEW6432)
und $(PROCESSOR_ARCHITECTURE)
durch $(Platform)
, um NUR die Zielplattform der Projekte zu berücksichtigen
- Ändern Sie die Plattformbestimmungslogik so, dass sie dem aktuellen Computer entspricht, sodass Sie keine 64-Bit-Binärdatei erstellen / referenzieren, die auf einer 32-Bit-Plattform ausgeführt werden soll.
Ich hatte dies ursprünglich für ein internes Wiki bei der Arbeit geschrieben, habe es jedoch geändert und den gesamten Prozess in meinem Blog veröffentlicht , wenn Sie an den detaillierten schrittweisen Anweisungen interessiert sind.