作为一家公司,我们正在使用Azure DevOps中的各种git repo创建NuGet包.测试和批准软件包后,应在Azure DevOps组织内共享.
通过使用Azure DevOps提要,我仍在努力设置构建/发布管道.在组织中共享包之前,包应首先可用于测试.
尽管Microsoft共享了许多建议和最佳实践,但我仍然找不到可行的解决方案.我将解释迄今为止我尝试过的解决方案:
使用一个Feed,整个组织.测试完成后,软件包会自动推送到@local Feed并推送到@prelease和@release视图.管道使用如下:
问题解决方案A:
为每个git存储库(由Microsoft推荐)使用专用订阅源,并从CI版本将NuGet包发布到此订阅源.每个包都发送到@local提要,没有任何后缀.测试并接受包时,包将被提升为@release视图.每个专用订阅源都配置为上游源(@release视图),发布视图中的包将在所有开发团队之间的组织中共享的公共订阅源中"缓存".
问题解决方案B:
我知道有很多问题,但我现在在这个问题上挣扎了很长时间.我希望有人能给我一些好的建议.
谢谢!
如何在没有在所需的无参数构造函数的基础上对nameorconnectionstring进行硬编码的情况下使EF迁移工作?
EF迁移强制您向自定义dbcontext添加默认构造函数.在dbcontext的基础中,您必须提供nameorconnectionstring.
public class CustomDbContext : DbContextBase
{
public CustomDbContext ()
: base("theconnectionstringwedontwanttoset") //hardcoded connection string
{
}
Run Code Online (Sandbox Code Playgroud)
我们需要对构造函数进行硬编码这一事实是我们无法使用的,因为在我们的客户端应用程序中,我们在没有配置文件的情况下工作,并且我们动态建立连接,因为我们连接到许多不同的数据库(服务器,本地sql compact).
在探索DbMigrationsConfiguration类之后,我找到了一个名为TargetDatabase的DbConnectionsInfo属性,可以在构造函数中设置它.但即使这个解决方案也行不通.这就是我做的:
public sealed class Configuration : DbMigrationsConfiguration<CustomDbContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
//Setting the TargetDatabase in the hope it will use it in the migration
TargetDatabase = new DbConnectionInfo("Server=xxx;Database=xxx;Trusted_Connection=True", "System.Data.SqlClient");
}
public class MigrationInitializer : MigrateDatabaseToLatestVersion<CustomDbContext, Configuration>
{
}
Run Code Online (Sandbox Code Playgroud)
我可以看到最终在DbMigrator中使用了Activator.CreateInstance,我期望从这个类中使用TargetDatabase.Create ...或者其他东西.
欢迎任何帮助或反馈.
提前致谢,
Wilko
azure-devops ×1
code-first ×1
dbcontext ×1
dbmigrator ×1
devops ×1
git ×1
migration ×1
nuget ×1