针对 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个项目中的每一个都会发布相应的程序集。
在我的解决方案中,有一个 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个项目中的每一个都会发布相应的程序集。