首页 > 解决方案 > .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项目并添加了依赖项:

我编译并得到这个错误:

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){}}

几个观察:

  1. 项目是.NET Core 2.2,但它正在使用 netcoreapp1.0文件夹中的包
  2. NuGet 包管理器成功添加了包Microsoft.NET.Test.Sdk v16.0.1,但在构建时它有一个未解析的引用

标签: visual-studionugetasp.net-core-2.0mstest

解决方案


命名空间“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 文件夹中的程序集。这是预期的行为


推荐阅读