我从 VS2019 升级到 VS2022 后遇到了这个问题。
我有一个项目 A,其中包含这些顶级 nuget 包(使用 nuget PackageReference)
作为这些包的一部分,nuget 都识别出了一大堆传递包,包括 BouncyCastle.Cryptography、MimeKit、System.Buffers 和一堆 System.xxx 包,包括名为
System.Runtime.CompilerServices.Unsafe
的包。
然后我有项目 B,它依赖于项目 A(上面)(项目 B 中没有其他直接依赖项或 nuget 包)
我的理解是,我不需要安装传递包,系统会在构建时自动处理它。
当我构建项目 A 时,所有传递依赖项都显示在 bin 文件夹中。
但是,当我构建项目 B 时,System.Runtime.CompilerServices.Unsafe
的所有传递依赖项
除了都显示在 bin 文件夹中。这造成了很多麻烦,因为当项目 B 调用项目 A 中的方法时,它需要
System.Runtime.CompilerServices.Unsafe
才能操作,但现在会抛出无法加载 System.Runtime.CompilerServices.Unsafe
dll 的异常。
为什么只是一个
System.Runtime.CompilerServices.Unsafe
传递依赖在项目 B 中不起作用?它在 VS2019 中运行良好,但升级到 VS2022 后它停止工作。我是否需要手动安装传递依赖项,或者 VS2022 与 VS2019 有什么不同。正确的修复方法是什么?
PS - 我尝试删除所有 nuget 软件包,然后重新安装它们,但这不起作用(实际上,一开始 Nuget 出了问题,它从未创建对已安装软件包的引用,但在干净地重新安装后,它最终创建了对已安装软件包的引用,但在构建项目 B 后或在依赖项中,该传递包仍然不会显示在项目 B 中)
我正在使用 Microsoft Visual Studio Community 2022(64 位)版本 17.5.4
这是项目A的.csproj文件:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="HtmlAgilityPack" Version="1.11.54" />
<PackageReference Include="INIFileParserDotNetCore.Signed" Version="2.5.2" />
<PackageReference Include="MailKit" Version="4.2.0" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
</ItemGroup>
</Project>
这是projectB的.csproj文件:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\ProjectA\ProjectA.csproj" />
</ItemGroup>
</Project>
但是构建之后,构建过程中没有任何错误输出:
如果可能的话,能否请您分享有关您的项目的更多信息,例如您的 .csproj 文件。