我遇到了MSDeploy和Visual Studio的發佈配置文件惱人的問題。在我的項目中,我有一個屬性組,我設置了一個項目供以後參考。
<LocalBuildLocation>$(SolutionDir)WebSites\MyWebSite\</LocalBuildLocation>
不幸的是,Visual Studio將隨機從這個屬性刪除$(SolutionDir)
字符串和我的構建就會失敗。我手動複製它,一切都很好。
任何人都可以想到爲什麼這個項目不斷刪除自己?
我遇到了MSDeploy和Visual Studio的發佈配置文件惱人的問題。在我的項目中,我有一個屬性組,我設置了一個項目供以後參考。
<LocalBuildLocation>$(SolutionDir)WebSites\MyWebSite\</LocalBuildLocation>
不幸的是,Visual Studio將隨機從這個屬性刪除$(SolutionDir)
字符串和我的構建就會失敗。我手動複製它,一切都很好。
任何人都可以想到爲什麼這個項目不斷刪除自己?
見:$(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中使用它們。即使他們有時會工作 - 這是不可靠的。正如其他答案指出的那樣:
Visual Studio宏像$(SolutionDir)在MSBuild中不起作用。您可以使用項目屬性來代替 。
來源:Code Generation in a Build Process
$(PROJECTDIR)項目的目錄(定義爲驅動器+路徑); 包含尾部反斜槓'\'。
$(SolutionDir)解決方案的目錄(定義爲驅動器+ 路徑);包括尾部反斜槓'\'。
需要注意的是:
您可以在項目的屬性頁對話框 對話框,在其中的字符串被接受的任何地方使用這些宏。
從MSDN: Using project properties in assembly and include directives
的Visual Studio宏象
$(SolutionDir)
不MSBuild的工作。您可以使用項目屬性來代替 。
使用$(ProjectDir)
(更安全,項目級屬性)或$(MSBuildProjectDirectory)
(最安全的,總是存在)
標記爲答案,而另一個是第一,這是更深入和第二到「宏生成命令和屬性」害得我我需要的東西!有趣的是$(SolutionDir)它在屬性組中的不一致性,這是我使用它的方式。我會看到$(MSBuildProjectDirectory)是否存在並且構建不會將其刪除。 –