我在使用MSDeploy和Visual Studio的发布配置文件时遇到了烦人的问题。在我的项目中,我有一个属性组,我设置了一个项目以供稍后参考。
<LocalBuildLocation>$(SolutionDir)WebSites\MyWebSite\</LocalBuildLocation>
不幸的是,Visual Studio将从此属性中随机删除$(SolutionDir)
字符串,我的构建将失败。我手动复制它,一切都很好。
有谁能想到为什么这个项目会自行删除?
答案 0 :(得分:1)
来自MSDN: Using project properties in assembly and include directives
像
default
这样的Visual Studio宏在MSBuild中不起作用。您 可以使用项目属性。
使用$(SolutionDir)
(更安全,项目级属性)或$(ProjectDir)
(最安全,始终存在)
答案 1 :(得分:1)
请参阅:$(SolutionDir) MSBuild property incorrect when running Sandcastle Help File Builder via CMD和getting the value of $(ProjectDir), $(SolutionDir) in a vcproj file
看起来$SolutionDir
确实(有时)与MSBuild一起工作,但前提是你要从解决方案文件构建。与$ProjectDir
大部分内容相同。
但是你不应该在MSBuild中使用它们。即使他们有时工作 - 它也不可靠。正如另一个答案所指出的那样:
像$(SolutionDir)这样的Visual Studio宏在MSBuild中不起作用。您 可以使用项目属性。
来源:Code Generation in a Build Process
$(ProjectDir)项目目录(定义为驱动器+路径); 包括尾部反斜杠'\'。
$(SolutionDir)解决方案的目录(定义为驱动器+ 路径);包括尾部反斜杠'\'。
请注意:
您可以在项目的“属性页”对话框中的任何位置使用这些宏 接受字符串的框。