global.json 和 src 文件夹有多重要?
How important is the global.json and src folder?
在 VS 2015 中,当您使用此方法创建新的 MVC 6.0 应用程序时:
File-->New-->Project-->ASP.NET Web Application-->ASP.NET 5 Preview Templates
您最终在磁盘上具有以下文件结构:
- 文物
- 源码
- MyProject.sln
- global.json
相反,如果我决定像这样先创建一个空白解决方案:
File-->New-->Project-->Other Project Types-->Visual Studio Solutions-->Blank Solution
并开始向此解决方案添加一个新的 ASP.NET Web 应用程序项目;您最终得到的文件结构 没有 一个 global.json
文件,也没有 src
文件夹。
根据 documentation,global.json 文件用于整体配置解决方案。它只包括两个部分,默认情况下是项目和 sdk。
projects
属性 指定哪些文件夹包含解决方案的源代码。默认情况下,项目结构将源文件放在 src 文件夹中,允许将构建工件放在同级文件夹中,从而更容易从源代码控制中排除此类内容。
sdk
属性 指定 Visual Studio 打开解决方案时将使用的 DNX(.Net 执行环境)版本。它设置在这里,而不是在 project.json 中,以避免解决方案中的不同项目针对不同版本的 SDK 的情况。
问题 1)
如上所述,如果我选择首先创建一个空白解决方案,我将不会有一个 global.json
文件。
global.json
文件不会以任何形式影响应用程序的行为吗?例如,当我部署或与构建工件交互时?
问题2)
如果它确实有影响,那么我应该手动创建这个 global.json
文件吗?
问题3)
在撰写本文时,是否有在 ASP.NET 5 中创建多层应用程序的推荐方法?
我应该先创建 MVC 项目并开始向项目添加 Class 库吗?
或
我是否应该首先创建一个空白解决方案并开始将 Class 库和 Web 应用程序添加到解决方案中(知道我不会有 global.json
文件也没有 src
文件夹)?
正如您所指出的,这似乎是针对 ASP.NET 5 创建解决方案的新方法。global.json 文件指定了一些解决方案级别的设置。特别是,它定义了 DNX runtime settings.
我见过两种 src/test 文件夹结构的方法。如果您查看 MVC team is doing,它们会将 src / test 文件夹合并到存储库根目录中。 Github 上的许多项目在根目录中都有一个 src 目录。因此,只要您对项目根目录中的 global.json 和解决方案文件没有问题,它似乎就与现有实践保持一致。
如果您查看 .NET 团队对 .NET 5 Core Framework 所做的工作,您会看到类似的模式,尽管没有 global.json 文件。他们的许多图书馆都有 src 和 tests 子目录。
我将尝试根据 MVC 团队目前所做的工作来设计我的项目,直到我对 .NET 5、DNX 和其他方面有更好的理解。它确实对您的项目强加了某种结构,但 VS 2013 和 .NET 4.5 也是如此。
src
、test
等文件夹允许您按类型对项目进行分组。当有大量项目时,这有助于保持解决方案的可维护性。这是已提议的各种项目类型的example。
根据 ASP.NET Core Engineering Guidelines:"By default project-to-project references must be sibling folders. Using a global.json
file allows a solution to specify non-standard locations to locate references."
总而言之,如果有很多项目,您可以将它们按类型分组到文件夹中,然后使用 global.json
允许一组中的项目引用另一组中的项目。
1) 是的,对我来说,我也遇到了这个问题,并从空白解决方案开始。然后我的项目有相互引用的问题。
2) 对我来说,没有 global.json 是行不通的。您还需要确保解决方案文件正确指向所有内容,例如 global.json。
这些项目没有建立,也没有为我找到彼此。
3) 为了让一切正常工作,我首先创建了一个 mvc 核心项目来获取 global.json 文件。然后我将 scr 文件夹重命名为 applicationname.web。确保相应地更改解决方案文件,以免指向错误。您还应该更新 project.json 文件。
这样,我想要一个像您一样的空白解决方案,我创建了一个默认项目,然后将其更改为我想要的方式,这对我有用。
我将使用洋葱架构作为指导来构建我当前的应用程序。我认为使用 core 执行此操作没有问题。这也意味着我将在不同的项目(可能命名为 infrastructure.IoC)中构建 IoC,以便我的 Web 项目不包含对包含 Web 不应了解的接口实现的项目的引用。
此外,如果您仍然有问题,我实际上遇到了本地构建和引用问题,因为我有 resharper 并且我关闭了它,然后项目之间的引用问题消失了,我可以成功构建。
在 VS 2015 中,当您使用此方法创建新的 MVC 6.0 应用程序时:
File-->New-->Project-->ASP.NET Web Application-->ASP.NET 5 Preview Templates
您最终在磁盘上具有以下文件结构:
- 文物
- 源码
- MyProject.sln
- global.json
相反,如果我决定像这样先创建一个空白解决方案:
File-->New-->Project-->Other Project Types-->Visual Studio Solutions-->Blank Solution
并开始向此解决方案添加一个新的 ASP.NET Web 应用程序项目;您最终得到的文件结构 没有 一个 global.json
文件,也没有 src
文件夹。
根据 documentation,global.json 文件用于整体配置解决方案。它只包括两个部分,默认情况下是项目和 sdk。
projects
属性 指定哪些文件夹包含解决方案的源代码。默认情况下,项目结构将源文件放在 src 文件夹中,允许将构建工件放在同级文件夹中,从而更容易从源代码控制中排除此类内容。
sdk
属性 指定 Visual Studio 打开解决方案时将使用的 DNX(.Net 执行环境)版本。它设置在这里,而不是在 project.json 中,以避免解决方案中的不同项目针对不同版本的 SDK 的情况。
问题 1)
如上所述,如果我选择首先创建一个空白解决方案,我将不会有一个 global.json
文件。
global.json
文件不会以任何形式影响应用程序的行为吗?例如,当我部署或与构建工件交互时?
问题2)
如果它确实有影响,那么我应该手动创建这个 global.json
文件吗?
问题3)
在撰写本文时,是否有在 ASP.NET 5 中创建多层应用程序的推荐方法?
我应该先创建 MVC 项目并开始向项目添加 Class 库吗?
或
我是否应该首先创建一个空白解决方案并开始将 Class 库和 Web 应用程序添加到解决方案中(知道我不会有 global.json
文件也没有 src
文件夹)?
正如您所指出的,这似乎是针对 ASP.NET 5 创建解决方案的新方法。global.json 文件指定了一些解决方案级别的设置。特别是,它定义了 DNX runtime settings.
我见过两种 src/test 文件夹结构的方法。如果您查看 MVC team is doing,它们会将 src / test 文件夹合并到存储库根目录中。 Github 上的许多项目在根目录中都有一个 src 目录。因此,只要您对项目根目录中的 global.json 和解决方案文件没有问题,它似乎就与现有实践保持一致。
如果您查看 .NET 团队对 .NET 5 Core Framework 所做的工作,您会看到类似的模式,尽管没有 global.json 文件。他们的许多图书馆都有 src 和 tests 子目录。
我将尝试根据 MVC 团队目前所做的工作来设计我的项目,直到我对 .NET 5、DNX 和其他方面有更好的理解。它确实对您的项目强加了某种结构,但 VS 2013 和 .NET 4.5 也是如此。
src
、test
等文件夹允许您按类型对项目进行分组。当有大量项目时,这有助于保持解决方案的可维护性。这是已提议的各种项目类型的example。
根据 ASP.NET Core Engineering Guidelines:"By default project-to-project references must be sibling folders. Using a global.json
file allows a solution to specify non-standard locations to locate references."
总而言之,如果有很多项目,您可以将它们按类型分组到文件夹中,然后使用 global.json
允许一组中的项目引用另一组中的项目。
1) 是的,对我来说,我也遇到了这个问题,并从空白解决方案开始。然后我的项目有相互引用的问题。
2) 对我来说,没有 global.json 是行不通的。您还需要确保解决方案文件正确指向所有内容,例如 global.json。 这些项目没有建立,也没有为我找到彼此。
3) 为了让一切正常工作,我首先创建了一个 mvc 核心项目来获取 global.json 文件。然后我将 scr 文件夹重命名为 applicationname.web。确保相应地更改解决方案文件,以免指向错误。您还应该更新 project.json 文件。 这样,我想要一个像您一样的空白解决方案,我创建了一个默认项目,然后将其更改为我想要的方式,这对我有用。
我将使用洋葱架构作为指导来构建我当前的应用程序。我认为使用 core 执行此操作没有问题。这也意味着我将在不同的项目(可能命名为 infrastructure.IoC)中构建 IoC,以便我的 Web 项目不包含对包含 Web 不应了解的接口实现的项目的引用。
此外,如果您仍然有问题,我实际上遇到了本地构建和引用问题,因为我有 resharper 并且我关闭了它,然后项目之间的引用问题消失了,我可以成功构建。