Nuget 包引用的资产



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

<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:"项目"是 'Microsoft.CodeAnalysis.Project' 和 'Some.Namespace.Project'

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

我的问题是我应该设置哪些资产(IncludeAssetsExcludeAssetsPrivateAssets(,用什么值,在哪个包中?

目前,.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>

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

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

最新更新