试图了解 VS 中 global.json 中 "projects" 的默认行为

Trying to understand the default behaviour of "projects" in global.json in VS

创建新项目后(示例在 .net core 中),global.json 的解决方案看起来像这样

{
  "projects": [ "src", "test" ],
  "sdk": {
    "version": "1.0.0-preview2-003131"
  }
}

并且在 src 文件夹中创建了新项目,解决方案文件夹中存在一个物理文件夹。尽管 global.json 出现在 visual studio 的 Solution Items 解决方案文件夹中,但不存在名为解决方案项目的物理文件夹。

现在,如果我添加它在解决方案文件夹内创建的单元测试项目,它不会创建任何名为 test 的解决方案文件夹或物理文件夹。

然后我创建了一个测试文件夹,它没有出现在 VS 上,并且创建一个新的测试项目没有在测试物理文件夹中创建。

如果我添加另一个新项目,新项目在 src 文件夹中创建。如果我添加任何项目(例如 XMLFile),它会将其添加到 Solution Items 解决方案文件夹中。但是如果你添加测试项目如果刚好出现在解决方案文件夹下

现在我的项目

物理文件夹如下所示

但是,我的问题是关于行为的差异。

  1. 为什么测试项目的行为不同
  2. 为什么 global.json 会自动添加测试?

我还注意到,如果测试项目不在测试文件夹中,有时它不会找到 xunit 或 nunit 测试,但会找到 MSTest 测试。所以,我的观点是 global.json 中的 test 如何帮助我们?

这里发生了一些事情。

项目JSON元素

将此视为 .sln 文件过去的工作方式。它告诉 Visual Studio 在哪里寻找要加载的项目。这些实际上也可以是完整路径 (e.x.C:\Projects\SomeOtherProject)。您应该在此处查看官方文档,其中解释得更多:https://docs.microsoft.com/hu-hu/dotnet/articles/core/tools/global-json

还应注意的是,在即将发布的 .net 核心版本(当前标记为预览版 4)中,我们返回到 .sln 文件,因此 global.json 项目元素已被删除(参见此处: https://docs.microsoft.com/hu-hu/dotnet/articles/core/preview3/tools/global-json)

你的新项目放在哪里?

老实说,这只是惯例。当您在 Visual Studio 中创建项目时,系统会询问您要将项目放置在何处,所以这取决于您...如果您希望将所有内容都放在一个解决方案文件夹中,那很好。既然你的代码有一个 "src" 文件夹,根目录中有 readme.md 等等,这似乎只是一种约定。

显然,如果您使用 dotnet new 或 yeoman 创建项目,您可以完全控制正在发生的事情。您的代码 不需要 位于 "src" 文件夹中。

在 .net 核心中测试

我可以看出您在测试方面走错了路。先快速阅读这篇文章:http://dotnetcoretutorials.com/2017/01/30/running-unit-tests-dotnet-test/

有几件事。

  1. .net 核心测试现在是 "console" 应用程序。或者至少是像这样创建的 他们在VS。

  2. 您需要安装特定的测试 运行ner 包才能获得 运行 测试 (测试 运行ners 存在 MSTest、XUnit 和 NUnit)。

  3. 您可以 运行 使用 "dotnet test" 从命令行进行测试。