Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MSBuild:directory.build.props和directory.build.targets不能与*.wixproj一起使用_Msbuild_Wix - Fatal编程技术网

MSBuild:directory.build.props和directory.build.targets不能与*.wixproj一起使用

MSBuild:directory.build.props和directory.build.targets不能与*.wixproj一起使用,msbuild,wix,Msbuild,Wix,directory.build.props和directory.build.targets不适用于Windows Installer Wix项目。*。wixproj 如何解决此问题?Background directory.build.props和directory.build.targets的隐式导入是MSBuild 15.0+的固有特性。它必须采用新的SDK项目样式格式才能工作。通过导入microsoft.common.props(SDK样式的项目会自动执行,而大多数较旧样式的项目会将其作为

directory.build.props和directory.build.targets不适用于Windows Installer Wix项目。*。wixproj

如何解决此问题?

Background directory.build.props和directory.build.targets的隐式导入是MSBuild 15.0+的固有特性。它必须采用新的SDK项目样式格式才能工作。通过导入microsoft.common.props(SDK样式的项目会自动执行,而大多数较旧样式的项目会将其作为项目文件中的第一个导入)实现神奇的效果。这是有案可查的

不幸的是,WiX项目不包括这个导入,这就是为什么它没有被接受(如Voctive源代码所示)。我说不出原因,但微软.common.props被排除在外可能是有原因的

由于不清楚导入microsoft.common.props是否会给您带来麻烦,建议使用新的getPathOfficeAbove函数手动导入扩展。你只需要做一次

解决方案
  • 使用右键单击项目卸载项目→ 卸载{name}…
  • 右键单击项目→ 编辑{name}…
  • 在第3行添加以下内容(应为
    中的第一个元素):

    
    
  • 在导入WiX目标之前,在文件底部添加以下内容:

    <Import Project="$([MSBuild]::GetPathOfFileAbove(directory.build.targets))"
            Condition="Exists('$([MSBuild]::GetPathOfFileAbove(directory.build.targets))')" />
    
    
    
  • 如果需要挂接到WiX生成过程或目标,请使用CustomBeforeWixtTargetsCustomAfterWixtTargets生成属性,这些属性可能通过MSBuildThisFileFullPath保留属性引用目录.build.targets文件本身。这将确保WiX在适当的时间导入内容


    配置后,将按预期使用目录.build.props目录.build.targets。如果WiX本机支持这些构建扩展,那么您将保持一致,并且应该能够在空闲时删除这些显式导入。

    WiX v4将切换到使用Microsoft.Common.props。很高兴知道。不过我很好奇,新安装项目(*.wixproj)的项目模板是作为Visual Studio扩展(又名Voctive)的一部分提供的,不是吗?我仍然没有看到Microsoft.Common.props被引入到项目中(参考:)这个导入是以其他方式进行的吗?感谢您的澄清。;)
    <Import Project="$([MSBuild]::GetPathOfFileAbove(directory.build.targets))"
            Condition="Exists('$([MSBuild]::GetPathOfFileAbove(directory.build.targets))')" />