gpt4 book ai didi

c# - 为什么在 Visual Studio 2015 中找到引用组件时在 Visual Studio 2017 中找不到

转载 作者:行者123 更新时间:2023-11-30 15:54:25 28 4
gpt4 key购买 nike

我有一个包含两个项目的解决方案 - 一个主要项目和一个单元测试项目。在 Visual Studio 2015 中打开时,会找到所有引用并成功构建项目。在 Visual Studio 2017 中打开时,未找到多个但并非所有 NuGet 包引用并且编译失败。一些失败的引用是...

  • System.Data.Common
  • System.Net.Http
  • System.Net.Http.WebRequest
  • 系统.安全.密码学.算法
  • System.Security.Cryptography.Encoding
  • System.Security.Cryptography.Primitives
  • System.Security.Cryptography.X509Certificates

References

...但是找到其他 NuGet 引用没有问题。此解决方案是使用 VS2015 创建的。查看 .csproj 文件时,没有发现任何异常。

我正在考虑在 VS2017 中从头开始重建它以尝试找出问题。

有没有其他人遇到过这个问题,和/或有没有人对为什么会发生这种情况以及应该采取什么措施来促进修复有任何建议?

更新:我创建了一个引用.NET 4.7.1 的全新 VS2017 WebApi 项目,并成功编译。然后我添加了 NuGet 包 System.Data.Common 4.3.0。 NuGet 安装过程似乎已完成且没有错误,但仍然留下无效引用。这很容易复制。

最佳答案

好的,回答我自己的问题。

我找到了我认为的答案。这个特定项目最初是在 VS2015 中使用 .NET 4.6.2 开发的。更改为 VS2017 时,我们选择将 .NET 升级到 4.7.1。问题出在 .NET 版本,而不是 VS 版本。

较新版本的 .NET 将许多此类 NuGet 程序集添加到标准库中。 NuGet 包与 native .NET 4.7.1 命名空间冲突。例如,在 .NET 4.7.1 中,命名空间 System.Data.Common 位于程序集 System.Data.dll 中。不再需要添加 NuGet 程序集 System.Data.Common.dll。事实上,如果我添加 System.Data.Common NuGet 程序集,我现在有两个具有命名空间 System.Data.Common 的程序集 - 一个在 System.Data.dll 中,另一个在 System.Data.Common.dll 中 - 因此引用问题。

解决方案是使用.NET 4.7.1 版本并删除多余的 NuGet 程序集。 System.Security 冲突也是如此。与 System.Net.Http 的冲突实际上被移到了名为 Microsoft.AspNet.WebApi.Client 的 NuGet 程序集中。

我希望所有这些对其他人有帮助...(uhhhgggg)...

BTW - 似乎在将 VS2015 与 .NET 4.7.1 一起使用时,这些冲突被抑制并且从不显示。这感觉像是 VS2015 的缺点。很高兴 VS2017 向他们展示了真正的问题......

关于c# - 为什么在 Visual Studio 2015 中找到引用组件时在 Visual Studio 2017 中找不到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50610209/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com