.NET Core MSTest项目无法在Microsoft名称空间中找到VisualStudio类型或名称空间

时间:2019-09-04 01:45:05

标签: visual-studio nuget asp.net-core-2.0 mstest

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

观察数:

  1. 项目为.NET Core 2.2,但它使用的软件包来自 netcoreapp1.0文件夹
  2. NuGet程序包管理器已成功添加程序包Microsoft.NET.Test.Sdk v16.0.1,但在构建时尚未解决 参考

1 个答案:

答案 0 :(得分:1)

  

类型或名称空间名称'VisualStudio'在   命名空间“ Microsoft”(您是否缺少程序集引用?)   ... \ 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中尝试clean the nuget cache by UI,然后再次删除bin,obj文件夹,然后运行重建。

3。请将VS IDE更新到最新版本,因为16.0.0太旧,并且最新版本已修复了一些问题。

  

项目是.NET Core 2.2,但它使用的是netcoreapp1.0中的软件包   文件夹

如果您在路径...\packages\microsoft.net.test.sdk\16.2.0\build中打开软件包,则可以发现该软件包只有三个版本的程序集:net40,netcoreapp1.0和uap10.0。由于您的项目是.net core 2.2,因此它将引用netcoreapp1.0文件夹中的程序集。这是预期的行为