.net 使用项目名称有条件地在目录. Build.props中包含引用

o2gm4chl  于 2022-12-24  发布在  .NET
关注(0)|答案(1)|浏览(130)

我的目录结构:

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项目引用了它自己,所以我得到了这个错误:
错误MSB4006:在涉及目标"_GenerateRestoreProjectPathWalk"的目标依赖关系图中存在循环依赖关系。
我想重写它以排除Common项目,可能会使用项目名称。

<ProjectReference Include="../Common/Common.csproj" Condition="WHAT GOES HERE"/>

我在"WHAT GOES HERE"里放了什么?

sdnqo3pr

sdnqo3pr1#

您可能需要检查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'"/>

相关问题