无法使用 nuget 包

Unable to use nuget packages

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

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”上有一个警告标志:

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

  2. Packages 上的那个在 Microsoft.Data.Tools.UnitTest 上,上面写着:Package 'Microsoft.Data.Tools.UnitTest' was restored 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'。此包可能与您的项目不完全兼容。

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

这些是我安装的 nuget 包。

Microsoft.Data.SqlClient

Microsoft.Azure.WebJobs

Microsoft.Data.Tools.UnitTest

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

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

之后,重新启动VS和你的项目,然后,运行 update-package -reinstall 工具下的命令- ->Nuget 包管理器-->包管理器控制台

更新 1

我认为您创建了一个 MSTest 测试项目(net core) 项目而不是 单元测试项目(net framework) 项目.

我这边,我用的unit test project(net framework),都很好

实际上,您的某些 nuget 包适用于 net framework。这就是警告 NU1701 所做的。但是您可以忽略该警告,因为您将软件包安装到 net core 而不是 net framework 中是正常的。并且该包可以在net core下使用。而且这只是一个小警告,而不是错误。

因此,update-package -reinstall 不能用于新的 sdk 项目(您的情况),只能用于 packages.confignet framework

也许试试这些:

1)除了,我认为Microsoft.Data.Tools.Components.dll来自C:\Program Files (x86)\Microsoft Visual Studio19\Community\Common7\IDE\Extensions\Microsoft\SQLDB。您已经从那里使用了一些 dll。由于某些情况,它们不起作用,您应该在当前环境中阅读它们。

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

然后,从C:\Program Files (x86)\Microsoft Visual Studio19\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) 要删除该警告,请在单元测试项目的 csproj 文件下添加此 xml 节点。

3) 或者您可以尝试使用 unit test project(net framework) 项目,然后在其中添加您的代码,我确保可以正常工作。