.NET Core MSTest 项目在 Microsoft 命名空间中找不到 VisualStudio 类型或命名空间
.NET Core MSTest project can't find VisualStudio type or namespace in Microsoft namespace
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.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
但在构建时它有一个未解决的问题
参考
The type or namespace name 'VisualStudio' does not exist in the
namespace 'Microsoft' (are you missing an assembly reference?)
...\packages\microsoft.net.test.sdk.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
包。
如果这些包安装成功,编译和构建应该可以进行。所以实际上我认为您安装的软件包有问题。
Some simple suggestions you can try:
1.Go Tools=>Nuget Package Manager=>Package Manager settings
以确保启用 Package Restore
的两个选项。然后删除 bin、obj 文件夹和 运行 重建。
2.If #1 不行,在 VS IDE 中尝试 clean the nuget cache by UI,然后再次删除 bin、obj 文件夹,然后 运行 重建。
3.Please 更新你的 VS IDE 到最新版本,16.0.0 太旧了,最新版本修复了一些问题。
Project is .NET Core 2.2 but it's using package from netcoreapp1.0
folder
如果你打开...\packages\microsoft.net.test.sdk.2.0\build
路径下的包,你会发现这个包只有三个版本的程序集,net40,netcoreapp1.0和uap10.0。由于您的项目是 .net core 2.2,它将引用 netcoreapp1.0 文件夹中的程序集。这是预期的行为。
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.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
但在构建时它有一个未解决的问题 参考
The type or namespace name 'VisualStudio' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?) ...\packages\microsoft.net.test.sdk.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
包。
如果这些包安装成功,编译和构建应该可以进行。所以实际上我认为您安装的软件包有问题。
Some simple suggestions you can try:
1.Go Tools=>Nuget Package Manager=>Package Manager settings
以确保启用 Package Restore
的两个选项。然后删除 bin、obj 文件夹和 运行 重建。
2.If #1 不行,在 VS IDE 中尝试 clean the nuget cache by UI,然后再次删除 bin、obj 文件夹,然后 运行 重建。
3.Please 更新你的 VS IDE 到最新版本,16.0.0 太旧了,最新版本修复了一些问题。
Project is .NET Core 2.2 but it's using package from netcoreapp1.0 folder
如果你打开...\packages\microsoft.net.test.sdk.2.0\build
路径下的包,你会发现这个包只有三个版本的程序集,net40,netcoreapp1.0和uap10.0。由于您的项目是 .net core 2.2,它将引用 netcoreapp1.0 文件夹中的程序集。这是预期的行为。