【发布时间】:2021-12-23 23:30:16
【问题描述】:
我有一个包含两个项目的解决方案 - 一个主要项目和一个单元测试项目。在 Visual Studio 2015 中打开时,会找到所有引用并成功构建项目。在 Visual Studio 2017 中打开几个但不是所有 NuGet 包引用时,未找到并且编译失败。一些失败的引用是...
- System.Data.Common
- System.Net.Http
- System.Net.Http.WebRequest
- System.Security.Cryptography.Algorithms
- System.Security.Cryptography.Encoding
- System.Security.Cryptography.Primitives
- System.Security.Cryptography.X509Certificates
...但是发现其他 NuGet 引用没有问题。此解决方案是使用 VS2015 创建的。查看 .csproj 文件时,没有任何异常跳出。
我正在考虑在 VS2017 中从头开始重建它以尝试找出问题。
有没有其他人遇到过这个问题,和/或有任何人对为什么会发生这种情况以及应该做些什么来促进修复有任何建议?
更新: 我创建了一个引用 .NET 4.7.1 的全新 VS2017 WebApi 项目,并成功编译。然后我添加了 NuGet 包 System.Data.Common 4.3.0。 NuGet 安装过程似乎已完成,没有任何错误,但我仍然得到一个无效的引用。这很容易复制。
【问题讨论】:
-
你在编译之前有没有运行
nuget restore?它应该作为构建过程的一部分来执行,可能在您的 .sln 或 csproj 文件中有些奇怪。 -
@RonBeyer - 我执行了 Update-Package -reinstall,但没有尝试 nuget restore。我认为重新安装就足够了,但也许不是......
-
仅供参考 - 不知道它是否与它有关 - 我尝试手动添加对简单 4.7.1 控制台应用程序的引用,由于某种原因,他将路径更改为以下
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.7.1\Facades\System.Data.Common.dll虽然我从 Nuget Packages 文件夹中选择了文件 - 对我来说似乎 4.7.1 只是不想要 nuget 包 -
@RandRandom - 看起来 System.Data.Common 命名空间现在可以在 System.Data.dll 中找到,并且不需要此 NuGet 包。我用这个特定的信息添加了这个问题的答案......
-
这解决了我的问题:删除 bin/obj 文件夹并构建。不知道为什么,但参考文献的所有警告都消失了。
标签: c# visual-studio-2017