2017-10-15 143 views
2

.csproj文件包含此聲明:.csproj文件中<SolutionDir>元素的作用是什麼?

<PropertyGroup> 
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> 
    ... 
    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir> 
    </PropertyGroup> 

我的期望是,它需要找到解決方案文件時,直接從項目目錄中生成項目,不指定/p:SolutionDir=參數。但是,..\不會自動解析爲絕對路徑,因此如果您具有與解決方案相關的依賴關係,則無用。

回答

3

看起來像這樣被添加到您的項目文件,允許建立獨立於解決方案文件的csproj文件,通過設置SolutionDir屬性(如果它尚未設置爲正確的值)(如果您撥打電話msbuild my.sln,但執行msbuild my.csproj時不行)。

我假設您的csproj文件(或導入的道具/目標文件)中的某些其他構建邏輯在某處使用$(SolutionDir),所以如果未使用此條件聲明設置屬性,則會失敗。

MSBuild解釋相對於csproj文件的路徑,並通過將工作目錄設置爲csproj文件的位置來執行所有命令,因此..\幾乎可以在所有用例中使用。

相關問題