Hier ist, was ich in einem früheren Projekt gemacht haben, die erfordert die manuelle Ausgabe der .csproj-Datei (en). Sie benötigen außerdem separate Verzeichnisse für die verschiedenen Binärdateien, die idealerweise gleichrangig sind und denselben Namen haben wie die Plattform, auf die Sie ausgerichtet sind.
Nachdem Sie die Referenzen einer einzelnen Plattform zum Projekt hinzugefügt haben, öffnen Sie die .csproj in einem Texteditor. Fügen Sie vor dem ersten Element <ItemGroup>
innerhalb des Elements <Project>
den folgenden Code hinzu, mit dessen Hilfe Sie feststellen können, auf welcher Plattform Sie arbeiten (und auf welche Sie bauen).
<!-- Properties group for Determining 64bit Architecture -->
<PropertyGroup>
<CurrentPlatform>x86</CurrentPlatform>
<CurrentPlatform Condition="'$(PROCESSOR_ARCHITECTURE)'=='AMD64' or '$(PROCESSOR_ARCHITEW6432)'=='AMD64'">AMD64</CurrentPlatform>
</PropertyGroup>
Dann für Ihre Plattform spezifische Referenzen, machen Sie Änderungen wie folgt zusammen:
<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 des $(CurrentPlatform)
Eigenschaft, die wir oben definiert sind. Sie können stattdessen Bedingungen verwenden, für die Baugruppen für welche Plattform enthalten sind.Man könnte muß auch entweder entweder:
- die
$(PROCESSOR_ARCHITEW6432)
und $(PROCESSOR_ARCHITECTURE)
mit $(Platform)
nur ersetzen, die Zielplattform der Projekte, um
- Alter der Plattform Bestimmungslogik zu prüfen, um die aktuellen Maschine angemessen zu sein, so dass Sie erstellen/referenzieren keine 64-Bit-Binärdatei, um sie auf einer 32-Bit-Plattform auszuführen.
Das hatte ich bei der Arbeit ursprünglich für einen internen Wiki geschrieben, aber ich habe es geändert und veröffentlichte die full process to my blog, wenn Sie in der ausführlichen Schritt-für-Schritt-Anleitung interessiert sind.
Sehr unklar, welche Sprache ist das? Ist das DLL-Projekt in der Lösung? –
Sorry, das ist .NET, ich schreibe in C#. –
Ok, ich habe es mit einer dummen Lösung gelöst: Eine zusätzliche csproj-Datei erstellt, die nur auf die x64-DLL verweist (und die x86-Konfiguration aus dem csproj entfernt hat). Es funktioniert, aber wenn jemand eine elegantere Lösung hatte, die kein zusätzliches csproj beinhaltete, würde ich es gerne sehen. –