【问题标题】:Visual Studio ~ Test project does not find namespace of tested projectVisual Studio ~ 测试项目没有找到测试项目的命名空间
【发布时间】:2022-01-19 18:45:27
【问题描述】:

我有一个要为其编写测试的 C# ASP.NET Core 项目。但是,由于某些奇怪的原因,测试项目找不到我要测试的项目的名称空间(因此也找不到类)。即使我清楚地引用了主要项目,这种情况也很明显。这怎么可能?

我得到的具体错误是:

The type or namespace name 'DeviceWebDisplay' could not be found (are you missing a using directive or an assembly reference?)

如前所述,即使我确实将项目引用添加到DeviceWebDisplay,也会发生这种情况。事实上,VisualStudio 甚至为我提供了快速操作“添加对 'DeviceWebDisplay' 的引用”。但是,无论我是否已经添加了这个,点击那个快速操作都没有任何效果。

有人知道是什么原因造成的吗?作为参考,这是我用于两个项目的模板:

  • DeviceWebDisplay:ASP.NET Core Web 应用程序
  • DeviceWebDisplayTest:单元测试项目 (.NET Framework)

编辑:

我认为它可能是测试项目的目标框架,但由于某种原因,一个只能升到 6.0,而下载网站(当我单击“安装其他框架...”时会到达)确实不为 Visual Studio 2022 提供任何 SDK。

问题是,我的 Visual Studio 显然安装了 .NET 6.0,否则我将无法在我的主项目中使用它。

可能是我需要为测试项目使用不同的模板吗?

【问题讨论】:

  • 你试过添加项目引用吗?

标签: c# visual-studio unit-testing


【解决方案1】:

问题是您的项目DeviceWebDisplay 目标.net 6 而您的测试项目DeviceWebDisplayTest 目标.NETFramwork,Version=4.7.2

目标 .NETFramwork,Version=4.7.2 的项目无法引用项目目标 .net6

你应该创建一个新的测试项目目标.net 6

阅读更多关于differance between .NET vs .NET Framework for server apps

【讨论】:

  • 我试过了,但可用的最大目标框架是 4.8,我找不到下载更高版本的选项。我将在主帖中添加有关此的详细信息。
  • .net.NETFramwork 不同,您应该创建一个依赖于.net 6 的新测试项目
【解决方案2】:

我发现了问题所在。

基本原因是我基于“单元测试项目(.NET Framework)”模板创建了我的测试项目。出于某种原因,该框架不支持 4.8 以上的 .NET 版本

我现在基于“MSTest 测试项目”模板创建了第二个测试项目,并且在那里我可以选择 6.0 版。之后,我还能够简单地从之前的测试项目中复制我的测试,然后它就可以正常工作了。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-13
  • 1970-01-01
  • 2020-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-17
相关资源
最近更新 更多