Da wir drei Baugruppen, die in expliziter x86 und x64-Versionen kommen, ich habe die entsprechenden CSPROJ Datei bearbeitet (s) zu verwenden, beispielsweise ein Block wie folgt aus:Die plattformspezifische ItemGroup von .csproj funktioniert für Assemblyreferenzen, aber nicht für Inhaltseinbeziehungen?
<ItemGroup Condition=" '$(Platform)' == 'x86' ">
<Reference Include="CaliberRMSDK">
<HintPath>..\Libraries\CaliberRMSDK_IKVM\32bit\CaliberRMSDK.dll</HintPath>
</Reference>
<Content Include="..\Libraries\CaliberRMSDK_IKVM\32bit\ikvm-native.dll">
<Link>ikvm-native.dll</Link>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="..\Libraries\CaliberRMSDK_IKVM\32bit\JVM.dll">
<Link>JVM.dll</Link>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup Condition=" '$(Platform)' == 'x64' ">
<Reference Include="CaliberRMSDK">
<HintPath>..\Libraries\CaliberRMSDK_IKVM\64bit\CaliberRMSDK.dll</HintPath>
</Reference>
<Content Include="..\Libraries\CaliberRMSDK_IKVM\64bit\ikvm-native.dll">
<Link>ikvm-native.dll</Link>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="..\Libraries\CaliberRMSDK_IKVM\64bit\JVM.dll">
<Link>JVM.dll</Link>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
</ItemGroup>
Wenn das Nachladen. csproj-Datei in Visual Studio 2010 und die Verwendung von "x86" als Plattform funktioniert alles einwandfrei. Wenn Sie "x64" als Plattform wählen, wird die korrekte 64-Bit-Baugruppenreferenz verwendet aber die verknüpfte (<Content Include= ...>
..) immer verwendet die 32-Bit-Einsen (und daher ist die App gebrochen).
Es gibt keine Any-CPU mehr in den Projektdateien und ich hätte "erwartet", dass es für den Inhalt einwandfrei funktioniert, auch, aber es tut es nicht. Gibt es etwas, was mir fehlt?
Haben Sie das ausführliche Protokoll msbuild aktiviert und sehen, was passiert? –
Ich habe es mit einem leeren Projekt getestet, und es funktioniert tatsächlich. Es sollte, wie hier angegeben: http://msdn.microsoft.com/en-us/library/ms171468(v=VS.100).aspx ("Visual Studio untersucht die Bedingungen für PropertyGroup, ItemGroup, Import, Eigenschaft und Elementelemente ... "). Beachten Sie, dass das Tag * Content * bedeutet, dass es sich um eine statische Datei handelt, die Sie sonst nicht verwenden können. Vielleicht wollten Sie es als Referenz-DLL verwenden? Das wird nicht funktionieren, in Ordnung. –
Hrm ... die JVM.dll gibt es nicht eine Assembly-Referenz, sondern eine native, die Funktionen enthält, die p/invoke'ed sind und daher das CopyToOutputDirectory usw. Grundsätzlich ist es nur eine Datei, die ich in der .csproj referenzieren soll kopiert in das Build-Ausgabeverzeichnis (aber in meinem Fall hängt es von dem zu verwendenden Verzeichnis ab). Die Assembly-Referenzen funktionieren in meinem Fall gut, nur die 'referenzierten'/projektspezifischen Referenzdateien nicht. Ich werde morgen früh überprüfen müssen, ob das Msbuild-Log irgendetwas enthält, das mir mehr sagen könnte. –