无法使用 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”上有一个警告标志:
在 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' 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 包。
所以请确保您的代码编辑器上没有红色错误行。
然后,关闭VS,删除解决方案文件夹下的.vs
隐藏文件夹,bin
和obj
文件夹
之后,重新启动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.config
和 net 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)
项目,然后在其中添加您的代码,我确保可以正常工作。
我编写了一些使用以下包的代码:
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' 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 包。
所以请确保您的代码编辑器上没有红色错误行。
然后,关闭VS,删除解决方案文件夹下的.vs
隐藏文件夹,bin
和obj
文件夹
之后,重新启动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.config
和 net 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)
项目,然后在其中添加您的代码,我确保可以正常工作。