Asp.net core mvc global.json和src文件夹有多重要?

Asp.net core mvc global.json和src文件夹有多重要?,asp.net-core-mvc,Asp.net Core Mvc,在VS 2015中,当您使用此方法创建新的MVC 6.0应用程序时: File-->New-->Project-->ASP.NET Web Application-->ASP.NET 5 Preview Templates 最终,磁盘上的文件结构如下: 人工制品 src MyProject.sln global.json 相反,如果我决定先创建一个空白解决方案,如下所示: File-->New-->Project-->Other Project

在VS 2015中,当您使用此方法创建新的MVC 6.0应用程序时:

File-->New-->Project-->ASP.NET Web Application-->ASP.NET 5 Preview Templates
最终,磁盘上的文件结构如下:

  • 人工制品
  • src
  • MyProject.sln
  • global.json
相反,如果我决定先创建一个空白解决方案,如下所示:

 File-->New-->Project-->Other Project Types-->Visual Studio Solutions-->Blank Solution
并开始向该解决方案添加新的ASP.NET Web应用程序项目;您最终得到的文件结构没有
global.json
文件,也没有
src
文件夹

根据,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项目并开始向项目中添加类库吗


我是否应该首先创建一个空白的解决方案,然后开始向解决方案添加类库和Web应用程序(知道我没有
global.json
文件或
src
文件夹)?

正如您所指出的,这似乎是针对ASP.NET 5创建解决方案的新方法。global.json文件指定了一些解决方案级别的设置。特别是,它定义了

我看到了两种实现src/test文件夹结构的方法。如果您看看是什么,它们会将src/test文件夹合并到存储库根目录中。例如,Github上的许多项目在根目录中都有src目录。因此,只要您对项目根目录中的global.json和解决方案文件没有问题,它似乎与现有实践非常一致

如果您查看.NET团队使用的是什么,您将看到类似的模式,尽管没有global.json文件。他们的许多库都有src和tests子目录


我将尝试按照MVC团队目前正在做的事情对我的项目进行模式化,直到我对.NET5、DNX和其他内容有了更好的理解。它确实对您的项目施加了某种结构,但VS 2013和.NET 4.5也是如此。

src、
test
等文件夹允许您按类型对项目进行分组。这有助于在存在大量项目时保持解决方案的可维护性。下面是已提出的各种项目类型的示例

根据:“默认情况下,项目到项目的引用必须是同级文件夹。使用
global.json
文件允许解决方案指定非标准位置来定位引用。”

总而言之,如果你有很多项目,你可以将它们按类型分组到文件夹中,并使用
global.json
允许一个组中的项目引用另一个组中的项目。

1)是的,对我来说,我也有这个问题,并从空白解决方案开始。然后,我的项目在相互引用时出现了问题

2) 对我来说,没有global.json它就无法工作。您还需要确保解决方案文件正确指向所有内容,如global.json。 这些项目没有构建,也没有为我找到其他项目

3) 为了让一切正常工作,我首先创建了一个mvc核心项目来获取global.json文件。然后我将scr文件夹重命名为applicationname.web。确保相应地修改解决方案文件,使其不会指向错误。您还应该更新project.json文件。 这样,我想要一个像你一样的空白解决方案,我创建了一个默认项目,然后将其更改为我想要的方式,这对我来说是可行的

我将以Onion Architeture为指导构建我当前的应用程序。我认为用core做这件事没有问题。这也意味着我将在另一个项目(可能名为infrastructure.IoC)中构建IoC,这样我的web项目就不会包含对包含web不应该知道的接口实现的项目的引用


另外,如果您仍然有问题,我实际上遇到了本地构建和引用问题,因为我关闭了resharper,然后项目之间的引用问题消失了,我可以成功构建。

谢谢,是的,目前看来,坚持微软的做法似乎更安全,但我学会了不要盲目相信微软给我们的东西(尤其是项目模板),这就是我。如果没有这些文件夹,并且global.json会产生一些影响,所有这些都无法回答问题。微软在默认项目模板中总是做得很差劲。我打开一个空的web应用程序,它有
app.UseIISPlatformHandler()。为什么我挑空了?我不是为IIS构建的…这实际上并没有回答所问的3个问题。虽然这是一个好问题,但您将其标记为已回答,而您的所有问题都没有得到实际回答。在撰写本文时(8个月前),有很多