在我的项目中,我使用了两种配置——32 位和 64 位(因为我在 32 位机器上开发但部署到 64 位机器)。
我的项目包含位于“C:...\Commons\bin\Debug\Commons.dll”的类库。我已将此 dll 添加到引用资料中,但当然当我切换到 64 位时这不起作用。
所以我需要添加“特定于平台的引用”的机制。
我知道我可以手动编辑 .csproj 文件来添加类似的内容:
<Reference Include="Commons" Condition="$(Platform) == 'x64'">
<HintPath>..\Commons\bin\x64\Release\Commons.dll</HintPath>
</Reference>
<Reference Include="Commons" Condition="$(Platform) == 'x86'">
<HintPath>..\Commons\bin\x86\Release\Commons.dll</HintPath>
</Reference>
我应该为类库做同样的事情吗?
我只是想知道即使对于类库,VS 也不支持“依赖于平台的引用”机制?
upd 看来我实际上需要以某种方式链接 4 种类型的 dll - x86/Debug、x86/Release、x64/Debug、x64/Release
最佳答案
事实上你不应该。您必须将代码编译为 MSIL,并添加对 MSIL 版本的 dll 的引用。您的代码和引用的代码将在运行时由运行时编译。如果它在 x86 计算机上运行,那么它将被编译为 x86,而在 x64 计算机上它将被编译为 x64。您无需担心。
如果您认为 JIT 很慢并且您需要性能,您可以在目标计算机上 NGen 程序集。
关于c# - 如果同时需要 32 位和 64 位,如何添加对类库的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10812762/