are*_*ler 5 c# xunit visual-studio-code
我正在使用Visual Studio代码进行.NET核心项目.我有一个ASP.NET核心项目,我想创建一个单独的单元测试项目,我创建了一个子文件夹并运行
dotnet new xunit
dotnet restore
Run Code Online (Sandbox Code Playgroud)
当我试图从cli"dotnet build""dotnet run"运行它时它运行成功,但是在visual studio中,它说它无法找到命名空间Xunit
这是非常奇怪的,因为到目前为止Visual Studio代码对我来说工作正常,它从来没有依赖的问题,它只与Xunit有这个问题.
有谁熟悉这个问题?
小智 13
我遇到过同样的问题.通过在命令选项板中键入"Restart Omnisharp"解决了这个问题.
Adr*_*ian 11
将 xunit 引用添加到根 csproj 可能是不可取的。
在单独的 csproj 中进行测试的想法是它们及其依赖项不会包含在主项目中。但是,将 xunit 添加到根 csproj 将导致主项目引用 xunit。根据产品的捆绑方式,这将导致 xunit dll 及其依赖的所有 dll 被不必要地包含在内。
不幸的是,Omnisharp 有嵌套 csproj 的问题。即使存在嵌套的 csproj,根 csproj 似乎也会声明所有子目录中的所有源文件。这会导致缺少参考错误。
不要嵌套 csproj。请注意Microsoft 的xunit设置指南如何将主 csproj 及其测试 csproj 放入 sln 的不同子目录中。
我第一次也遇到了这个错误,在将项目重组为不嵌套 csproj 后,错误得到了解决;只有测试 csproj 引用 xunit。
我尝试直接使用vscode打开测试项目(而不是在子文件夹中打开包含测试项目的根项目),现在vscode识别Xunit.
然后我再次使用vscode打开根项目,将Xunit添加到根项目的csproj文件中,在根项目中运行"dotnet restore",现在Xunit在测试项目中被识别.
问题是vscode(或者是Omnisharp?我不确定)可能只查看根csproj文件并忽略恰好位于子文件夹中的任何csproj文件.
以上都不适合我。
事实证明,我应该检查一下之前的笔记,因为这是使用 Xunit 的项目中反复出现的问题:
确保所有已安装的 Xunit.xxxxxxxxx 软件包具有完全相同的版本。
在自动更新我的 NuGet 包时/之后会出现问题,在撰写本文时,它将安装 Xunit 2.4.1 (以及版本2.4.1的其他几个 xunit 包)以及 xunit.runner.visualstudio
版本2.4.3 (!)
虽然在此 NuGet 更新期间没有报告任何异常情况,但结果是构建永久失败,其中Fact
和Assert
突然未知,例如
错误 CS0246:找不到类型或命名空间名称“Fact”(您是否缺少 using 指令或程序集引用?)Imazen.Test.Webp
对我来说最有效的就是去恢复它xunit.runner.visualstudio
,重新安装 2.4.1。
顺便说一句,在 Visual Studio 中,这看起来像这样(恢复/重新安装后):
请注意,那里的包管理器暗示有更新可用,一旦您再次应用 2.4.3 更新,无论以何种方式,您都会回到原点:一个奇怪的失败构建。
解决方案的关键是让所有已安装的 xunit 软件包具有相同的版本。-- 如果 NuGet 上只有少数可用更新,请等到所有 xunit 包都可用于同一版本。
不知道为什么这如此挑剔,因为我只观察到这种脆弱的行为xunit.*
,但这是今年早些时候起作用的(我已经忘记了),现在又发生在我身上,结果相同:强制恢复 NuGet xunit 包更新。
归档时间: |
|
查看次数: |
4245 次 |
最近记录: |