directory.build.props和directory.build.targets不适用于Windows Installer Wix项目。 * .wixproj
如何解决此问题?
答案 0 :(得分:2)
directory.build.props 和 directory.build.targets 的隐式导入是MSBuild 15.0+的固有功能。它必须不必使用新的SDK项目样式格式才能运行。 魔术通过导入 microsoft.common.props 发生,SDK样式项目会自动执行,大多数较旧样式的项目会作为第一个导入项目文件。已记录在here中。
不幸的是,WiX项目不包括此导入,这就是为什么不对其进行提取的原因(如Votive源中的here所示)。我不能说为什么,但是 microsoft.common.props 可能被排除在外。
由于尚不清楚是否导入 microsoft.common.props 会引起您的痛苦,因此建议的方法是使用新的 GetPathOfFileAbove手动导入扩展名功能强大。您只需要执行一次。
在第3行中添加以下内容(应为<Project>
中的第一个元素):
<Import Project="$([MSBuild]::GetPathOfFileAbove(directory.build.props))"
Condition="Exists('$([MSBuild]::GetPathOfFileAbove(directory.build.props))')" />
在导入WiX目标之前之前,在文件底部添加以下内容:
<Import Project="$([MSBuild]::GetPathOfFileAbove(directory.build.targets))"
Condition="Exists('$([MSBuild]::GetPathOfFileAbove(directory.build.targets))')" />
如果您需要加入WiX构建过程或目标,请使用 CustomBeforeWixTargets 和 CustomAfterWixTargets 构建属性,这些属性可能引用 directory.build。通过 MSBuildThisFileFullPath 保留属性定位文件本身。这将确保WiX在适当的时间导入内容。
配置完成后,将按预期使用 directory.build.props 和 directory.build.targets 。如果WiX原生支持这些构建扩展,那么您将结盟,并可以在闲暇时删除这些显式导入。