为x86和x64平台构建项目定位

时间:2017-12-01 01:58:19

标签: c# visual-studio msbuild x86-64 projects-and-solutions

在我的解决方案中,有一个类库,它是一个excel加载项。当我构建解决方案或项目时,我希望首先构建此项目以针对x86进行构建,并输出名为xxx.dll的文件,然后针对x64进行定位,并输出名为xxx_x64.dll的文件。

我该怎么做,或者我怎么能编辑csproj文件?感谢。

2 个答案:

答案 0 :(得分:1)

  

我该怎么办呢,或者我怎么编辑csproj文件?

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

<AssemblyName>TestWithDllWithPlatform_$(Platform)</AssemblyName>

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

如果您仍希望通过输出名为xxx.dll而非xxx_x86.dll的文件来定位x86,则可以尝试在定位x64时使用生成后事件重命名dll文件:

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

在这种情况下,当您定位x64时,输出名为xxx_x64.dll的程序集:

enter image description here

此外,如果您不想保留原始xxx_.dll,可以在后期构建中使用以下命令将其删除:

if $(Platform) == x64 (del "$(TargetPath)")

希望这有帮助。

答案 1 :(得分:0)

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

这是我的项目快照:

enter image description here

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

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

在构建解决方案时,2个项目中的每个项目都将发出相应的程序集。