c# - 无法使用 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”上有一个警告标志:
在 Microsoft.Data.Tools.Components 上组装的那个,Version= 16.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a,processorArchitecture=MSIL。它没有给我有关警告的详细信息。
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' . 此软件包可能与您的项目不完全兼容。
解决方案
使用您的 csproj 文件进行测试并安装任何 nuget 包,我没有收到任何构建错误。
这些是我安装的 nuget 包。
所以请确保您的代码编辑器上没有红色错误行。
然后,关闭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.config
于net 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)
项目,然后在那里添加你的代码,我确保它可以工作。
推荐阅读
- mongodb - 如何为多个字段创建“in”运算符查询?
- angular - 需要有关角度组件之间数据共享的专家意见
- sql - 如何获取以前更改的记录?
- asp.net - 为什么在 CLR 中的 GC 后使用的堆内存不会减少?
- node.js - 如何将 json 数据从 400 错误返回到 Express 的 React?
- html - 自动调整投资组合中的照片大小
- python-3.x - 当基本情况执行时,它会打印值但返回 None
- html - 如何制作可折叠的丝带?
- python - 错误:(-215:断言失败)尝试使用 pafy 和 openCv 捕获 youtube 视频时出错
- batch-file - 批处理:%%a 循环变量无法与静态字符串进行比较