WiX 4 安装程序中引用多目标 C# 项目,未找到绑定名称

问题描述 投票:0回答:1

我有一个为 net Framework 4.7.2 和 net 7.0 构建的多目标 C# 项目。项目的 TargetFrameworks 元素设置为:

<TargetFrameworks>net472;net7.0-windows</TargetFrameworks>

现在我需要将 net Framework 和 net 7 构建输出包含到我的安装程序(不同的文件夹)中。

我尝试按照 WiX 讨论中描述的步骤进行操作: https://github.com/wixtoolset/issues/issues/7241

最初,我按照此处描述的“旧”方式进行操作:在 wixproj 中,我插入 2 个项目引用,并显式指定了不同的 BindName:

<ProjectReference Include="..\MyProject\MyProject.csproj" SetTargetFramework="TargetFramework=net472" BindName="MyProject.net472"/>
<ProjectReference Include="..\MyProject\MyProject.csproj" SetTargetFramework="TargetFramework=net7.0-windows" BindName="MyProject.net7.0-windows"/>

然后在 wxs 文件中我将文件包含在组件中:

...
<File Id="MyFile Name="MyProject.dll" Source="!(bindpath.MyProject.net472)\MyProject.dll" />
...
<File Id="MyFile Name="MyProject.dll" Source="!(bindpath.MyProject.net7.0-windows)\MyProject.dll" />

这似乎有效。文件已找到并打包。但它需要 wixproj 文件中的 2 个 ProjectReference 条目。按照 WiX 讨论中描述的方式,应该可以只添加一个:

<ProjectReference Include="..\MyProject\MyProject.csproj" TargetFrameworks="net472,net7.0-windows"/>

它应该自动生成BindName。

但是,在我这样做之后,找到了具有 MyProject.net472 绑定路径的文件,但没有找到具有 MyProject.net7.0-windows 绑定路径的文件。最后我也尝试了不加-windows,结果是一样的。怎么了?

wix
1个回答
0
投票

-
在构建管道(我认为是MSBuild,或者可能是预处理器变量)中不是有效的标识符字符,因此在.wxs代码中使用时必须将其更改为
_

<File Id="MyFile Name="MyProject.dll"
      Source="!(bindpath.MyProject.net7.0_windows)\MyProject.dll" />
© www.soinside.com 2019 - 2024. All rights reserved.