由于我们有三个显式 x86 和 x64 版本的程序集,因此我编辑了相应的 .csproj 文件以使用,例如,如下所示的块:
<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>
在 Visual Studio 2010 中重新加载 .csproj 文件并使用“x86”作为平台时,一切都工作得很好。选择“x64”作为平台时,将使用正确的 64 位程序集引用BUT链接的 (<Content Include= ...>
..) always使用 32 位的(因此该应用程序已损坏)。
项目文件中不再有任何 CPU,我“期望”它也能很好地包含内容......但事实并非如此。我有什么遗漏的吗?
我们将 Condition 属性放在 Reference 元素上,效果很好。也许 Condition 属性还需要添加到 Content 元素中? (您真的需要 Reference 元素和 Content 元素吗?)例如:
<Reference Include="SomeLib" Condition="$(Platform)=='x86'">
<HintPath>..\..\ThirdParty\SomeLib\clr4\x86\SomeLib.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="SomeLib" Condition="$(Platform)=='x64' Or $(Platform)=='AnyCPU'">
<HintPath>..\..\ThirdParty\SomeLib\clr4\x64\SomeLib.dll</HintPath>
</Reference>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)