无法使用 nuget 包
Posted
技术标签:
【中文标题】无法使用 nuget 包【英文标题】:Unable to use nuget packages 【发布时间】:2021-05-06 15:50:14 【问题描述】:我编写了一些使用以下包的代码:
using System;
using System.IO;
using System.Reflection;
using Microsoft.Azure.WebJobs;
using Microsoft.Data.SqlClient;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json.Linq;
但是当我编译代码时,有一些与以下代码相关的错误,我想它是由“Microsoft.Data.SqlClient”包编写的:
using Microsoft.Data.Tools.Schema.Sql.UnitTesting;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.Common;
namespace GetDatafromBlob0201
[TestClass()]
public class SqlDatabaseSetup
[AssemblyInitialize()]
public static void InitializeAssembly(TestContext ctx)
// Setup the test database based on setting in the
// configuration file
SqlDatabaseTestClass.TestService.DeployDatabaseProject();
SqlDatabaseTestClass.TestService.GenerateData();
“使用 Microsoft.VisualStudio.TestTools.UnitTesting”会引发错误。 我试过安装 NuGet 包,但没有解决错误。
这些是我得到的错误: Errors after compiling
主要是 CS0246。 最后一个表示无法使用引用。
我还注意到我的项目下的“Packeges”和“Assembly”上有一个警告标志:
Microsoft.Data.Tools.Components 上的 Assembly,Version= 16.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a,processorArchitecture=MSIL。它没有给我有关警告的详细信息。
Packages 上的那个在 Microsoft.Data.Tools.UnitTest 上,它说:Package 'Microsoft.Data.Tools.UnitTest' 是使用 '.NETFramework,Version=v4.6.1, .NETFramework,Version=v4 恢复的。 6.2, .NETFramework,Version=v4.7, .NETFramework,Version=v4.7.1, .NETFramework,Version=v4.7.2, .NETFramework,Version=v4.8' 而不是项目目标框架 '.NETCoreApp,Version=v3 .1'。此软件包可能与您的项目不完全兼容。
【问题讨论】:
在不知道正在发生的错误的情况下帮助您解决这个问题非常困难。因此,如果您在此处使用相关内容更新您的帖子会有所帮助。 试试update-package -reinstall
抛出错误。 - 如果出现错误,请显示错误。请阅读How to Ask 了解您的问题应该包含哪些内容。
该代码不是“由 'Microsoft.Data.SqlClient' 包编写的”。该代码使用该 nuget 包中包含的元素来配置一些自动化测试。正如其他人已经说过的那样,edit your question 并添加您得到的错误。
感谢您的所有反馈。我已用错误更新了帖子。我在哪里可以使用此代码? “更新包-重新安装”
【参考方案1】:
使用您的 csproj 文件进行测试并安装任何 nuget 包,我没有收到任何构建错误。
这些是我安装的 nuget 包。
Microsoft.Data.SqlClient
Microsoft.Azure.WebJobs
Microsoft.Data.Tools.UnitTest
所以请确保您的代码编辑器上没有红色错误行。
然后,关闭VS,删除解决方案文件夹下的.vs
隐藏文件夹,bin
和obj
文件夹。
之后,重启VS和你的项目,然后在Tools-->Nuget Package Manager下运行update-package -reinstall
命令-- >包管理器控制台
更新 1
我认为你创建了一个MSTest test project(net core)项目,而不是一个unit test project(net framework)项目。
在我这边,我用unit test project(net framework)
,一切正常。
其实,您的一些 nuget 包是针对 net framework
的。这就是警告NU1701
所做的。但是您可以忽略该警告,因为您将软件包安装到网络核心而不是网络框架中是正常的。并且该包可以在net core下使用。这只是一个小警告而不是错误。
因此,update-package -reinstall
不能用于 new-sdk 项目(您的情况),并且仅适用于 packages.config
和 net framework
。
不妨试试这些:
1)另外,我认为Microsoft.Data.Tools.Components.dll
来自C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\Extensions\Microsoft\SQLDB
。您从那里使用了一些 dll。由于某些情况,这些方法不起作用,您应该在当前环境中阅读它们。
并且首先,请删除此处的所有引用:
然后,从C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\Extensions\Microsoft\SQLDB
读取这些dll,检查您的项目是否还有这些错误。
或者您可以从那里删除 Microsoft.Data.Tools.Components.dll
来修复它。
如果这些没有帮助,也许可以尝试像我上面所说的那样的 nuget 包:
1) clean all nuget caches first 或者直接删除C:\Users\xxx\.nuget\packages
下的所有文件
2)若要删除该警告,请将该xml节点添加到单元测试项目的csproj文件下。
3) 或者您可以尝试使用unit test project(net framework)
项目,然后在其中添加您的代码,我确保它可以工作。
【讨论】:
你好。非常感谢您的明确答复。不过,恐怕它没有用。我得到了和以前一样的错误,现在我有一个新的警告:NU1701 Package 'Microsoft.Data.Tools.UnitTest' was restore using '.NETFramework,Version=v4.6.1, .NETFramework,Version=v4.6.2, . NETFramework,Version=v4.7, .NETFramework,Version=v4.7.1, .NETFramework,Version=v4.7.2, .NETFramework,Version=v4.8' 而不是项目目标框架 '.NETCoreApp,Version=v3.1' .此软件包可能与您的项目不完全兼容。 我还注意到我的项目下的一个警告标志,在“Packeges”和“Assembly”上,在 Microsoft.Data.Tools.Components 上的 Assembly 上的那个,版本 = 16.0.0.0, Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a,processorArchitecture=MSIL,“包”上的那个和NU1701警告一样 其实你应该创建一个unit test project(net framework)
而不是MSTest test project(net core)
。根据您的描述,您已经创建了一个 net core 测试项目。您的一些 nuget 包适用于 net framework
。这就是警告NU1701
所做的。实际上,您可以忽略该警告。这是正常的,因为您已将软件包安装到网络核心而不是网络框架中。并且该包可以在net core下使用。您可以在答案上使用尝试我的功能。我已经更新了我的答案,你可以检查一下。
非常感谢。我按照你的步骤,它的工作原理。老实说,我不知道为什么,但这让我可以继续处理我的代码,所以再次感谢您提供明确的答案和说明。以上是关于无法使用 nuget 包的主要内容,如果未能解决你的问题,请参考以下文章
无法安装 NuGet 包:回退到 NuGet 本地缓存 [重复]
在非 sdk 项目中使用时无法解决 NuGet 包依赖关系,但在 sdk 项目中可以正常工作