【问题标题】:What's purpose of <SolutionDir> element in .csproj file?.csproj 文件中 <SolutionDir> 元素的用途是什么?
【发布时间】:2018-03-26 22:58:26
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    我假设您的 csproj 文件(或导入的 props/targets 文件)中的一些其他构建逻辑在某处使用 $(SolutionDir),因此如果未使用此条件声明设置属性,它将失败。

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

    【讨论】:

      猜你喜欢
      • 2018-01-31
      • 2015-07-14
      • 2010-11-06
      • 1970-01-01
      • 2016-09-05
      • 1970-01-01
      • 1970-01-01
      • 2018-03-09
      相关资源
      最近更新 更多