Visual Studio发布MSdeploy $(SolutionDir)

时间:2016-01-21 17:33:28

标签: visual-studio msbuild publish msdeploy

我在使用MSDeploy和Visual Studio的发布配置文件时遇到了烦人的问题。在我的项目中,我有一个属性组,我设置了一个项目以供稍后参考。

<LocalBuildLocation>$(SolutionDir)WebSites\MyWebSite\</LocalBuildLocation>

不幸的是,Visual Studio将从此属性中随机删除$(SolutionDir)字符串,我的构建将失败。我手动复制它,一切都很好。

有谁能想到为什么这个项目会自行删除?

2 个答案:

答案 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 CMDgetting 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)解决方案的目录(定义为驱动器+   路径);包括尾部反斜杠'\'。

请注意:

  

您可以在项目的“属性页”对话框中的任何位置使用这些宏   接受字符串的框。

来源:Macros for Build Commands and Properties