4

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

4

2 回答 2

1

事实上你不应该。您必须将代码编译为 MSIL,并添加对 MSIL 版本的 dll 的引用。您的代码和引用的代码将在运行时由运行时编译。如果它在 x86 计算机上工作,那么它将被编译为 x86,而在 x64 计算机上,它将被编译为 x64。您无需担心。

如果您认为 JIT 很慢并且需要性能,您可以在目标计算机上 NGen 您的程序集。

于 2012-08-16T18:54:30.257 回答
0

以下问题可以解决您的问题。希望这可以帮助。
在 Visual Studio 中构建时有条件地使用 32/64 位引用

于 2018-04-12T07:16:56.330 回答