针对 x86 和 x64 平台构建项目

Build project targeting for both x86 and x64 platform

在我的解决方案中,有一个 class 库,它是一个 excel 加载项。当我构建解决方案或那个项目时,我希望这个项目首先针对 x86 构建,输出名为 xxx.dll 的文件,然后针对 x64 构建,输出名为 xxx_x64.dll.[=12 的文件=]

我应该怎么做,或者我该如何编辑 csproj 文件?谢谢

How should I do for this, or how could I edit the csproj file?

程序集xxx.dll的名称由项目文件中的属性AssemblyName定义,如果要更改以平台命名的默认输出程序集,可以简单更改此 属性 的值在项目文件 .csproj:

中具有以下代码
<AssemblyName>TestWithDllWithPlatform_$(Platform)</AssemblyName>

但是使用此设置,当您针对 x86 时,您将获得名为 xxx_x86.dll 的输出程序集。

如果您仍然希望通过输出名为 xxx.dll 而不是 xxx_x86.dll 的文件来定位 x86,您可以尝试在定位时使用 post-build 事件重命名 dll 文件x64:

if $(Platform) == x64 (copy /y "$(TargetPath)" "$(ProjectDir)$(OutDir)$(TargetName)_$(Platform).dll")

在这种情况下,当您以 x64 为目标时,输出程序集命名为 xxx_x64.dll:

此外,如果你不想保留原来的xxx_.dll,你可以在post-build:

中用下面的命令删除它
if $(Platform) == x64 (del "$(TargetPath)")

希望这对您有所帮助。

最后,我在Visual Studio中使用共享项目解决了这个问题。我想要的是通过构建解决方案生成两个 Excel 插件程序集,一个针对 x86 平台或 AnyCPU,另一个针对 x64 平台。

这是我的项目快照:

所有代码文件(*.cs)和资源(图片或xml文件)都被移动到共享项目中,其他2个项目都引用了它。

至于其他2个项目,它们之间存在一些差异,例如程序集名称和目标平台。一个是 XXX.dll,定位 AnyCPU,另一个是 XXX_64.dll,定位 x64

构建解决方案时,2个项目中的每一个都会发布相应的程序集。