.csproj文件中<solutiondir>元素的用途是什么?

时间:2017-10-15 08:16:06

标签: .net build msbuild projects-and-solutions

我的.csproj文件包含此声明:

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

我的期望是,当您直接从项目目录构建项目并且未指定/p:SolutionDir=参数时,需要发现解决方案文件。但是,..\不会自动解析为绝对路径,因此如果您有与解决方案相关的依赖项,则无效。

1 个答案:

答案 0 :(得分:3)

看起来这已被添加到您的项目文件中,以允许独立于解决方案文件构建csproj文件,方法是设置SolutionDir属性(如果它尚未设置为正确的值)(这将是如果你打电话msbuild my.sln而不是执行msbuild my.csproj时没有。)

我假设你的csproj文件中的一些其他构建逻辑(或导入的props / targets文件)在某处使用$(SolutionDir),所以如果没有使用这个条件声明设置属性,它将会失败。

MSBuild解释相对于csproj文件的路径,并通过将工作目录设置为csproj文件的位置来执行所有命令,因此..\几乎适用于所有用例。