0

我正在使用 Vs2010 和 Wix 3.6.0917.0,作为记录。我在 .wixproj 文件中经常使用 $(SolutionDir) 属性,因为我只将安装程序构建为解决方案构建的一部分或团队构建的一部分,而不是单独构建。但是,虽然从命令行构建工作得很好(无论是从桌面上的 cmd 还是在构建代理上构建时),当我尝试将 .wixproj 文件重新加载到 IDE 时,我都会收到错误,因为所有 $(SolutionDir) 变量正在解析到项目目录,而不是解决方案目录。考虑:

C:\workspace\projectCollection\teamProject\branch\solution.sln C:\workspace\projectCollection\teamProject\branch\source\installer\installer.wixproj

并假设一个共享的自定义目标文件:

C:\workspace\projectCollection\teamProject\branch\build\shared.targets

在 installer.wixproj 中引用:

<Import Project="$(SolutionDir)build\shared.targets">

命令行构建工作正常...

C:\workspace\projectCollection\teamProject\branch\> MSBuild /t:build /property:Platform=x64;Configuration=Debug solution.sln
0 Errors
0 Warnings

Build succeeded!

但是加载到vs2010,你会看到......

The imported project "C:\workspace\projectCollection\teamProject\branch\source\installer\build\shared.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk. C:\workspace\projectCollection\teamProject\branch\source\installer\installer.wixproj

您可以在这里看到 $(SolutionDir)build\shared.targets 的解析结果是获取项目目录而不是解决方案目录。是什么赋予了?

4

1 回答 1

0

我的猜测是当 wixproj 被加载到 VS2010 中时 $(SolutionDir) 解析为空。在这种情况下,导入的文件变为“build\shared.targets”。由于路径是相对的,因此假定它是相对于项目目录的。使用“..”或其他路径可以帮助您解决问题。

我在 VS2010 中使用 WiX 3.5.2222.0 验证了此操作失败。AC# 控制台应用程序项目 (csproj) 按预期工作。

您是否为此提交了针对 WiX 的错误?

我稍微查看了 WiX vs2010 插件代码,解决方案属性仅在构建时创建,而不是在加载项目时创建。

于 2010-10-29T15:46:44.247 回答