首页 > 解决方案 > 无法使用 nuget 包

问题描述

我编写了一些使用以下包的代码:

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 包,但这并没有解决错误。

这些是我得到的错误: 编译后的错误

主要是 CS0246。最后一个表示无法使用该引用。

我还注意到我的项目下的“Packeges”和“Assembly”上有一个警告标志:

  1. 在 Microsoft.Data.Tools.Components 上组装的那个,Version= 16.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a,processorArchitecture=MSIL。它没有给我有关警告的详细信息。

  2. Packages 上的那个在 Microsoft.Data.Tools.UnitTest 上,它说: 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' . 此软件包可能与您的项目不完全兼容。

标签: c#visual-studionuget

解决方案


使用您的 csproj 文件进行测试并安装任何 nuget 包,我没有收到任何构建错误。

这些是我安装的 nuget 包。

Microsoft.Data.SqlClient

Microsoft.Azure.WebJobs

Microsoft.Data.Tools.UnitTest

所以请确保您的代码编辑器上没有红色错误行。

然后,关闭VS,删除.vs解决方案文件夹下的隐藏文件夹,bin文件obj夹。

之后,重新启动 VS 和您的项目,然后,在Tools --> Nuget Package Manager --> Package Manager Consoleupdate-package -reinstall下运行命令

更新 1

我认为您创建了一个MSTest 测试项目(网络核心)项目,而不是一个单元测试项目(网络框架)项目。

在我这边,我用过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。由于某些情况,这些不起作用,您应该在当前环境中阅读它们。

首先,请从此处删除所有引用:

在此处输入图像描述

然后,从中读取这些 dllC:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\Extensions\Microsoft\SQLDB以检查您的项目是否仍然存在这些错误。

或者你可以Microsoft.Data.Tools.Components.dll从那里移除来修复它。

如果这些没有帮助,也许可以尝试像我上面所说的那样的 nuget 包:

1) 首先清理所有nuget缓存或删除所有文件C:\Users\xxx\.nuget\packages

2)要删除该警告,请在单元测试项目的 csproj 文件下添加此 xml 节点。

在此处输入图像描述

在此处输入图像描述

3)或者你可以尝试使用unit test project(net framework)项目,然后在那里添加你的代码,我确保它可以工作。


推荐阅读