2016-01-21 138 views
1

我遇到了MSDeploy和Visual Studio的發佈配置文件惱人的問題。在我的項目中,我有一個屬性組,我設置了一個項目供以後參考。

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

不幸的是,Visual Studio將隨機從這個屬性刪除$(SolutionDir)字符串和我的構建就會失敗。我手動複製它,一切都很好。

任何人都可以想到爲什麼這個項目不斷刪除自己?

回答

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中使用它們。即使他們有時會工作 - 這是不可靠的。正如其他答案指出的那樣:

Visual Studio宏像$(SolutionDir)在MSBuild中不起作用。您可以使用項目屬性來代替 。

來源:Code Generation in a Build Process

$(PROJECTDIR)項目的目錄(定義爲驅動器+路徑); 包含尾部反斜槓'\'。

$(SolutionDir)解決方案的目錄(定義爲驅動器+ 路徑);包括尾部反斜槓'\'。

需要注意的是:

您可以在項目的屬性頁對話框 對話框,在其中的字符串被接受的任何地方使用這些宏。

來源:Macros for Build Commands and Properties

+0

標記爲答案,而另一個是第一,這是更深入和第二到「宏生成命令和屬性」害得我我需要的東西!有趣的是$(SolutionDir)它在屬性組中的不一致性,這是我使用它的方式。我會看到$(MSBuildProjectDirectory)是否存在並且構建不會將其刪除。 –