我正在为一个.NET核心项目使用Visual Studio代码。我有一个ASP.NET核心项目,我想为它创建一个单独的单元测试项目,我创建了一个子文件夹并运行
dotnet new xunit
dotnet restore
当我尝试从cli "dotnet build“"dotnet run”运行它时,它运行成功,但是在visual studio中,它显示找不到命名空间Xunit。
这非常奇怪,因为到目前为止,Visual Studio代码对我来说工作得很好,它从来没有依赖关系的问题,只有Xunit有这个问题。
有人熟悉这个问题吗?
发布于 2017-07-16 20:01:42
我尝试使用vscode直接打开测试项目(而不是打开子文件夹中包含测试项目的根项目),现在vscode可以识别Xunit。
然后,我再次使用vscode打开根项目,将Xunit添加到根项目的csproj文件中,在根项目中运行"dotnet restore“,现在Xunit在测试项目中被识别。
问题是vscode (或者是Omnisharp?我不确定)可能只查看根csproj文件,而忽略恰好在子文件夹中的任何csproj文件。
发布于 2017-11-03 17:15:17
我也有同样的问题。通过在命令面板中输入"Restart Omnisharp“解决了这个问题。
发布于 2018-08-03 02:14:32
将xunit引用添加到根csproj可能是不可取的。
问题所在
将测试放在单独的csproj中的想法是,它们及其依赖项不会包含在主项目中。但是,将xunit添加到根csproj将导致主项目引用xunit。根据产品的捆绑方式,这将导致不必要地包含xunit dll和它所依赖的所有dll。
不幸的是,Omnisharp的嵌套csproj有一个问题。看起来根csproj将声明所有子目录中的所有源文件,即使有嵌套的csproj。这会导致缺少引用错误。
解决方案
不要嵌套csproj。请注意Microsoft's xunit setup guide如何将主csproj及其测试csproj放入sln的不同子目录中。
我最初也遇到了这个错误,在重新构建项目以不嵌套csproj之后,错误得到了解决;只有测试csproj引用了xunit。
https://stackoverflow.com/questions/45127849
复制相似问题