使用MVC5,创建一个引用所有层的引导程序项目非常容易,从而将UI层与对基础架构逻辑的引用分离开来 . 该项目将包含启动配置逻辑,例如设置IoC容器 .
这样做的方法是定义一个启动类:
public class Startup
{
public static void Start()
{
// startup configuration (IoC etc) goes here
}
}
然后在 AssemblyInfo.cs
中添加一行:
[assembly: PreApplicationStartMethod(typeof(Startup), "Start")]
不幸的是,这种方法不再适用于asp.net 5.我简要介绍了文档,但我发现的只是框架在Web项目中查找名为Startup的类 .
我也看了 Microsoft.AspNet.Hosting
source code,它似乎负责找到Startup类 . 我可以看到对配置类的一些引用,因此有可能通过使用某种配置设置来加载程序集,但我无法确认或确定哪个设置 .
另外,如果这是真的,当在Startup类中加载文件本身时,如何使用 config.json
文件确定Startup类?是否有不同的配置启动程序集的选项,例如使用环境变量?
2 回答
只想关注这一点,在asp.net core rtm中,你既不需要任何.ini也不需要.json,你需要做的只是调用.UseStartup(“NamespaceOfYourStartup”)并确保包含Startup类的程序集在您的asp.net核心Web项目已发布文件的位置相同 .
您可以更改WebHostBuilder将查找启动类型的程序集 .
将名称为
Microsoft.AspNet.Hosting.ini
的INI配置文件添加到wwwroot
文件夹中,其中包含以下内容:App.Bootstrapper
是应用程序引导程序项目的命名空间 .启动类必须看起来相同,例如与
ConfigureServices
和Configure
:如果您很好奇,可以看到确定启动类型here的逻辑 . 如果我们在INI文件中指定
Hosting:Application
键,它将使用该值而不是appEnvironment.ApplicationName
.