visual-studio - .NET Core MSTest 项目在 Microsoft 命名空间中找不到 VisualStudio 类型或命名空间
问题描述
Microsoft Visual Studio Professional 2019
Version 16.0.0
VisualStudio.16.Release/16.0.0+28729.10
我添加了一个.NET Core 2.2
MSTest
项目并添加了依赖项:
- Microsoft.NET.Test.Sdk v16.0.1(我更新到 v16.2.0)
- Microsoft.NET.Test.Sdk v1.3.2(我更新到 v1.4.0)
- MSTest.TestFramework v1.3.2(我更新到 v1.4.0)
我编译并得到这个错误:
CS0234 The type or namespace name 'VisualStudio' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?) ...\packages\microsoft.net.test.sdk\16.2.0\build\netcoreapp1.0\Microsoft.NET.Test.Sdk.Program.cs
Microsoft.NET.Test.Sdk.Program.cs
// <auto-generated> This file has been auto generated. </auto-generated>
using System;
[Microsoft.VisualStudio.TestPlatform.TestSDKAutoGeneratedCode]
class AutoGeneratedProgram {static void Main(string[] args){}}
几个观察:
- 项目是
.NET Core 2.2
,但它正在使用netcoreapp1.0
文件夹中的包 - NuGet 包管理器成功添加了包
Microsoft.NET.Test.Sdk v16.0.1
,但在构建时它有一个未解析的引用
解决方案
命名空间“Microsoft”中不存在类型或命名空间名称“VisualStudio”(您是否缺少程序集引用?)...\packages\microsoft.net.test.sdk\16.2.0\build\netcoreapp1.0\ Microsoft.NET.Test.Sdk.Program.cs
如果我们使用Microsoft.NET.Test.Sdk
包,当我们编译和构建我们的项目时,Microsoft.NET.Test.Sdk.Program.cs
也会csc.exe
在构建过程中被编译。
因此错误消息表明该Microsoft.VisualStudio.TestPlatform.TestSDKAutoGeneratedCode
属性无法被很好地识别,因为对 的引用有问题Microsoft.TestPlatform.ObjectModel.dll
。
笔记:
1.Microsoft.VisualStudio.TestPlatform.TestSDKAutoGeneratedCode
来自组装Microsoft.TestPlatform.ObjectModel.dll
。
2.Microsoft.NET.Test.Sdk
包依赖Microsoft.TestPlatform.TestHost
包,Microsoft.TestPlatform.TestHost
包依赖Microsoft.TestPlatform.ObjectModel
包。
如果这些软件包安装成功,编译和构建应该可以工作。所以实际上我认为您安装的软件包有问题。
您可以尝试一些简单的建议:
1.Tools=>Nuget Package Manager=>Package Manager settings
去确保Package Restore
启用了两个选项。然后删除 bin、obj 文件夹并运行重建。
2.如果#1不起作用,尝试在VS IDE中通过UI清理nuget缓存,然后再次删除bin、obj文件夹,然后运行rebuild。
3.请将你的VS IDE更新到最新版本,16.0.0太旧了,最新版本修复了一些问题。
项目是 .NET Core 2.2,但它使用的是 netcoreapp1.0 文件夹中的包
如果你在path中打开包,...\packages\microsoft.net.test.sdk\16.2.0\build
你会发现这个包只有三个版本的程序集,net40、netcoreapp1.0和uap10.0。由于您的项目是 .net core 2.2,它将引用 netcoreapp1.0 文件夹中的程序集。这是预期的行为。
推荐阅读
- solidity - 部署时的 Solidity 错误消息:“无法将未定义或空值转换为对象”
- vba - 子窗体不显示 VBA 记录更改
- javascript - 如何在 React Native 中添加到购物车?
- mysql - 连接后 SQL 内连接返回错误值
- uipath - 无法捕获 http 结果请求标头
- mysql - 基于条件的查询以过滤 Mysql Spring Boot 应用程序中的记录
- ios - XCode 上 Shared_Preferences、URL_LANCHER 和 SHARE 之间的冲突
- docker - 如何从docker文件覆盖工作目录中的文件?
- angular - 如何在 Angular 11 中使用 ArrowDown 和 ArrowUp 键滚动列表
- kql - Kusto KQL (Defender ATP) - 有什么方法可以按排序顺序比较字符串?