c# - 如果同时需要 32 位和 64 位,如何添加对类库的引用

标签 c# visual-studio-2010

在我的项目中,我使用了两种配置——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/

相关文章:

c# - 我是否必须取消订阅局部变量的匿名事件处理程序?

c# - 页脚按钮的 Gridview colspan

c# - 基于匿名类型创建泛型类实例

mysql - 需要有关在 Vb.NET 2010 上的 Crystal Reports 中使用 SQL 查询的帮助

visual-studio - PEM_read_bio_X509(有时)失败(OpenSSL 1.0.1p)

c++ - VS2010 VC++找不到可执行文件

c# - Linq - 如何将它们合并成一个 IQueryable?

c# - 如何在 NUnit TearDown 中获取测试失败消息

c++ - 即使有足够的空间,OpenCV 也拒绝分配内存

vb.net - 未定义类型 'CrystalDecisions.CrystalReports.Engine.Section'。