.net - 使用项目名称有条件地在 Directory.Build.props 中包含引用
问题描述
我的目录结构:
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"
什么?
解决方案
您可能想要检查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'"/>
推荐阅读
- android - 通过 OAuth 发布版本的 Google Drive 收到 dailyLimitExceededUnreg
- python - 计数小于和结束条件的值
- amazon-web-services - AWS:找不到 iam 的实例元数据
- javascript - 如何使用 javascript 和 mvc 将画布上传到项目的文件夹
- sql - 汇总 SQL Server 中 1 列中每个值的值计数
- apache-kafka - 如何获取运行在 ibm cloud 上的中间件服务的可用性状态?
- sql - 如何检查字符串的长度是否超过一个单词并仅保留第一个单词,否则将整个字符串保留在 SQL 中?
- java - Java,无法解析的日期错误,从字符串转换为日期
- git - 如何告诉 git 接受所有当前的更改
- php - Firebase PHP将地图添加到数组