使用项目名称有条件地在 Directory.Build.props 中包含引用
Conditionally include reference in Directory.Build.props using project name
我的目录结构:
Directory.Build.props
Common
Common.csproj
Project1
Project1.csproj
Project2
Project2.csproj
Project3
Project3.csproj
我希望所有其他项目都引用 Common
项目,所以我将其添加到 Directory.Build.props
:
<ItemGroup>
<ProjectReference Include="../Common/Common.csproj" />
</ItemGroup>
但这意味着 Common
项目引用了它自己,所以我得到了这个错误:
error MSB4006: There is a circular dependency in the target dependency graph involving target "_GenerateRestoreProjectPathWalk".
我想重写它以排除 Common
项目,也许以某种方式使用项目名称。类似于:
<ProjectReference Include="../Common/Common.csproj" Condition="WHAT GOES HERE"/>
我要在 "WHAT GOES HERE"
中输入什么?
您可能想要检查 Common.csproj
中的特征 属性,例如<RootNamespace>
。假设 Common
项目如下所示:
<Project Sdk="Microsoft.NET.Sdk" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- ... -->
<PropertyGroup>
<RootNamespace>Common</RootNamespace>
<!-- ... -->
</PropertyGroup>
<!-- ... -->
</Project>
Directory.Build.props
中的项目引用应该是:
<ProjectReference Include="./Common/Common.csproj" Condition="'$(RootNamespace)' != 'Common'"/>
我的目录结构:
Directory.Build.props
Common
Common.csproj
Project1
Project1.csproj
Project2
Project2.csproj
Project3
Project3.csproj
我希望所有其他项目都引用 Common
项目,所以我将其添加到 Directory.Build.props
:
<ItemGroup>
<ProjectReference Include="../Common/Common.csproj" />
</ItemGroup>
但这意味着 Common
项目引用了它自己,所以我得到了这个错误:
error MSB4006: There is a circular dependency in the target dependency graph involving target "_GenerateRestoreProjectPathWalk".
我想重写它以排除 Common
项目,也许以某种方式使用项目名称。类似于:
<ProjectReference Include="../Common/Common.csproj" Condition="WHAT GOES HERE"/>
我要在 "WHAT GOES HERE"
中输入什么?
您可能想要检查 Common.csproj
中的特征 属性,例如<RootNamespace>
。假设 Common
项目如下所示:
<Project Sdk="Microsoft.NET.Sdk" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- ... -->
<PropertyGroup>
<RootNamespace>Common</RootNamespace>
<!-- ... -->
</PropertyGroup>
<!-- ... -->
</Project>
Directory.Build.props
中的项目引用应该是:
<ProjectReference Include="./Common/Common.csproj" Condition="'$(RootNamespace)' != 'Common'"/>