当Wix项目加载到Vs2010时,其他人都注意到$(SolutionDir)解析为ProjectDir?

时间:2010-10-03 18:51:53

标签: visual-studio-2010 msbuild wix projects-and-solutions wix3.5

我正在使用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的已解析结果是获取项目目录而不是解决方案目录。是什么给了什么?

1 个答案:

答案 0 :(得分:0)

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

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

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

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