发布.Net Core RC1应用程序后,project.json中指定的命令具有为其创建的相应.cmd文件,这些文件可在部署后执行(例如web.cmd和ef.cmd).在我的例子中,我想在我的部署目标上运行以下Entity Framework命令:
dotnet ef database update -c MyContext
Run Code Online (Sandbox Code Playgroud)
当我从包含源代码的文件夹运行它时,这工作正常,但是在发布后,它似乎没有在编译的DLL中找到命令.我对RC2命令变化的理解是"工具"可以编译为名为dotnet - *.dll的独立应用程序,并且可以通过CLI执行.如何将实体框架核心工具公开为已发布输出中的可执行DLL?
仅供参考,我的构建/部署工作流程如下:
TeamCity的
dotnet restore => dotnet build => dotnet test => dotnet publish
八达通部署
上传包=> EF更新数据库=>等
我正在将.Net Core 1.x项目迁移到.Net Core 2.0。发生的变化之一是,现在ConfigureServices在启动期间使用扩展名来配置身份验证IServiceCollection。
我的身份验证方案中使用了一些自定义服务,但是大部分DI注册都是使用AutoFac构建的(在此之后被调用):
public IServiceProvider ConfigureServices(IServiceCollection services)
{
//Other .Net Services Registered
services.AddTransient<ITicketStore, DistributedCacheTicketStore>();
services.AddSingleton<AuthenticationEvents>();
var sp = services.BuildServiceProvider();
services.AddAuthentication()
.AddCookie(options =>
{
//Other cookie options
options.SessionStore = sp.GetService<ITicketStore>();
})
.AddOpenIdConnect(options =>
{
//Other OIDC options
options.Events = sp.GetService<AuthenticationEvents>();
});
//Register application services with AutoFac
var builder = new ContainerBuilder();
RegisterAutoFacTypes(builder);
//Include services from .Net DI container
builder.Populate(services);
//Build and return the AutoFac container
var container = builder.Build();
return container.Resolve<IServiceProvider>();
}
Run Code Online (Sandbox Code Playgroud)
目前,我试图同时注册的依赖关系DistributedCacheTicketStore …