首页 > 解决方案 > Nuget PackageReference 的资产

问题描述

我在一个项目中有这个包:

<PackageReference Include="Microsoft.CodeAnalysis" Version="2.8.2" />
<PackageReference Include="Microsoft.CodeAnalysis.Analyzers" Version="1.1.0" />
<PackageReference Include="Microsoft.CodeAnalysis.Common" Version="2.8.2" />
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="2.8.2" />
<PackageReference Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="2.8.2" />
<PackageReference Include="Microsoft.CodeAnalysis.VisualBasic" Version="2.8.2" />
<PackageReference Include="Microsoft.CodeAnalysis.VisualBasic.Workspaces" Version="2.8.2" />
<PackageReference Include="Microsoft.CodeAnalysis.Workspaces.Common" Version="2.8.2" />

我将此 .csproj 文件移动到 2017 格式,然后,当我构建解决方案时,出现错误:

错误 CS0104:“Project”是“Microsoft.CodeAnalysis.Project”和“Some.Namespace.Project”之间的模糊引用

当然,这个错误是因为上面描述的包之一移动到父公共项目并与同名的类冲突。

我的问题是我应该设置哪些资产(IncludeAssets, ExcludeAssets, PrivateAssets),具有什么值以及在哪个包中?

目前,.csproj 文件如下所示:

<PackageReference Include="Microsoft.CodeAnalysis" Version="2.8.2">
  <PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="Microsoft.CodeAnalysis.Analyzers" Version="1.1.0">
  <PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="Microsoft.CodeAnalysis.Common" Version="2.8.2">
  <PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="2.8.2">
  <PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="2.8.2">
  <PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="Microsoft.CodeAnalysis.VisualBasic" Version="2.8.2">
  <PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="Microsoft.CodeAnalysis.VisualBasic.Workspaces" Version="2.8.2">
  <PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="Microsoft.CodeAnalysis.Workspaces.Common" Version="2.8.2">
  <PrivateAssets>all</PrivateAssets>
</PackageReference>

但我认为这不是最好和精确的选择。

标签: .net-corevisual-studio-2017nuget-packagecsproj

解决方案


最好的办法是创建一个全新的空白项目。参考 2.8.2 版本,然后将 csproj 文件中的内容与您的实际解决方案进行比较。删除真实解决方案中不在虚拟文件中的任何引用。命名空间很可能已经改变,但至少一旦你得到正确的引用,命名空间就不应该那么困难了。


推荐阅读