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

标签 .net build msbuild projects-and-solutions

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

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

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

最佳答案

看起来这已添加到您的项目文件中,以允许构建独立于解决方案文件的 csproj 文件,通过设置 SolutionDir 属性(如果它尚未设置为正确的值)(如果您调用 msbuild my.sln 但在执行 msbuild my.csproj 时不会出现这种情况。

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

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

关于.net - .csproj 文件中 <SolutionDir> 元素的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46753078/

相关文章:

android - 构建Android应用程序时出错

Vue.js:如何防止 `vue-cli-service --modern`构建旧版 bundle ?

windows - 跨平台、Apache Ant、构建的公共(public)环境变量列表

msbuild - 无法将 Gallio MBUnit 与 Team City 集成

c# - Webbrowser 每个控制不同的代理

c# - 捕获多个自定义FaultException类型

C# .Net 协方差 - 为了旧时的缘故再次出现?

c# - MSTEST 委托(delegate)人许可

visual-studio-2012 - 如何使用 MsDeploy 为 iisApp Provider 设置部署路径?

msbuild - 从同一解决方案中的项目引用 Nuget 包所需的解决方案