无法使用 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隐藏文件夹,binobj文件夹。

之后,重启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.confignet 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 包:回退到 NuGet 本地缓存 [重复]

在非 sdk 项目中使用时无法解决 NuGet 包依赖关系,但在 sdk 项目中可以正常工作

由于“无法初始化 PowerShell 主机”而无法安装 nuget 包

nuget 包无法在 VS 2019 中下载

由于“无法初始化PowerShell主机”,无法安装nuget包