在VS 2015中,使用此方法创建新的MVC 6.0应用程序时:
File-->New-->Project-->Other Project Types-->Visual Studio Solutions-->Blank Solution
您最终在磁盘上拥有以下文件结构:
相反,如果我决定首先创建一个空白解决方案:
global.json
开始向此解决方案添加新的ASP.NET Web应用程序项目;您最终拥有 没有 src
文件且没有projects
文件夹的文件结构。
根据documentation,,global.json文件用于整体配置解决方案。它默认只包含两个部分,项目和sdk。
sdk
属性指定哪些文件夹包含解决方案的源代码。默认情况下,项目结构将源文件放在src文件夹中,允许将构建工件放在兄弟文件夹中,从而更容易从源代码控制中排除这些内容。
global.json
属性指定Visual Studio在打开解决方案时将使用的DNX(.Net Execution Environment)版本。它设置在这里,而不是在project.json中,以避免解决方案中的不同项目针对不同版本的SDK的情况。
问题1)
如上所述,如果我选择首先创建一个空白解决方案,我将不会有global.json
个文件。
没有global.json
文件影响应用程序的任何形状或形式的行为?例如,当我部署或与构建工件交互时?
问题2)
如果确实有影响,那么我应该手动创建这个global.json
文件吗?
问题3)
在撰写本文时,是否有建议的方法在ASP.NET 5中创建多层应用程序?
我应该首先创建MVC项目并开始向项目添加类库吗?
或者
我应该首先创建一个空白解决方案并开始将类库和Web应用程序添加到解决方案中(知道我不会有src
文件或{{1}}文件夹)?
答案 0 :(得分:1)
src
,test
等文件夹允许您按类型对项目进行分组。这有助于在存在大量项目时保持解决方案的可维护性。以下是已提出的各种项目类型的example。
根据ASP.NET Core Engineering Guidelines:“默认情况下,项目到项目的引用必须是兄弟文件夹。使用global.json
文件允许解决方案指定非标准位置来定位引用。”
总而言之,如果有很多项目,您可以按类型将它们分组到文件夹中,并使用global.json
允许一个组中的项目引用另一个项目中的项目。
答案 1 :(得分:1)
1)是的,对我来说,我也遇到了这个问题,并从空白解决方案开始。然后我的项目引起了彼此引用的问题。
2)对我来说,没有global.json就行不通。您还需要确保解决方案文件正确指向所有内容,例如global.json。 这些项目没有建立,也没有为我找到对方。
3)为了让一切正常,我首先创建了一个mvc核心项目来获取global.json文件。然后我将scr文件夹重命名为applicationname.web。确保相应地更改解决方案文件,以免出错。您还应该更新project.json文件。 这样,你想要一个像你这样的空白解决方案,我创建了一个默认项目,然后将其改为我想要的方式,这对我有用。
我将使用Onion Architeture作为指导来构建我当前的应用程序。我认为没有问题与核心这样做。这也意味着我将在一个不同的项目(可能名为infrastructure.IoC)中构建IoC,这样我的Web项目就不会包含对包含Web不应该知道的接口实现的项目的引用。
另外,如果你仍然有问题,我实际上有本地构建和引用问题,因为我有resharper并且我关闭了,然后项目之间的引用问题消失了,我可以成功构建。
答案 2 :(得分:-2)
正如您所指出的,这似乎是在定位ASP.NET 5时创建解决方案的新方法.lobal.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也是如此。