试图了解 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 解决方案文件夹中。但是如果你添加测试项目如果刚好出现在解决方案文件夹下
现在我的项目
物理文件夹如下所示
但是,我的问题是关于行为的差异。
- 为什么测试项目的行为不同
- 为什么 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/
有几件事。
.net 核心测试现在是 "console" 应用程序。或者至少是像这样创建的
他们在VS。
您需要安装特定的测试 运行ner 包才能获得 运行 测试
(测试 运行ners 存在 MSTest、XUnit 和 NUnit)。
您可以 运行 使用 "dotnet test" 从命令行进行测试。
创建新项目后(示例在 .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 解决方案文件夹中。但是如果你添加测试项目如果刚好出现在解决方案文件夹下
现在我的项目
物理文件夹如下所示
但是,我的问题是关于行为的差异。
- 为什么测试项目的行为不同
- 为什么 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/
有几件事。
.net 核心测试现在是 "console" 应用程序。或者至少是像这样创建的 他们在VS。
您需要安装特定的测试 运行ner 包才能获得 运行 测试 (测试 运行ners 存在 MSTest、XUnit 和 NUnit)。
您可以 运行 使用 "dotnet test" 从命令行进行测试。