2017-10-15 90 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文件的位置来执行所有命令,因此..\几乎可以在所有用例中使用。

相关问题