试图理解"项目"的默认行为。在VS中的global.json中

时间:2017-01-31 12:10:49

标签: visual-studio visual-studio-2015 .net-core projects-and-solutions solution

创建新项目后(例如.net核心)解决方案的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 解决方案文件夹中。但是,如果您添加测试项目,如果只是出现在解决方案文件夹

下面

现在我的项目

enter image description here

,物理文件夹如下所示

enter image description here

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

  1. 为什么测试项目的行为不同
  2. 为什么测试会自动添加到global.json上?
  3. 我还注意到,如果测试项目不在测试文件夹中,有时候,它没有找到xunit或nunit测试,但是它找到了MSTest测试。那么,我的观点是global.json中的 test 如何帮助我们?

1 个答案:

答案 0 :(得分:0)

这里发生了一些事情。

Projects 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项目元素(请参阅此处:{{3} })

您的新项目在哪里放置?

老实说,这只是惯例。当您在Visual Studio中创建项目时,系统会询问您要将项目放在何处,这取决于您...如果您希望将所有内容放在一个解决方案文件夹中,那就没问题了。现在你的代码中有一个“src”文件夹,根目录中有readme.md等,这似乎是一个惯例。

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

.net核心测试

我可以通过测试看到你走错了路。请先快速阅读本文:https://docs.microsoft.com/hu-hu/dotnet/articles/core/preview3/tools/global-json

所以有几件事。

  1. .net核心测试现在是“控制台”应用程序。或至少是创建的 他们在VS.

  2. 您需要安装特定的测试运行器包才能运行测试 (MSTest,XUnit和NUnit存在测试运行器)。

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