.net Migratordotnet:如何检查迁移是否挂起?

.net Migratordotnet:如何检查迁移是否挂起?,.net,data-migration,migratordotnet,migrator.net,.net,Data Migration,Migratordotnet,Migrator.net,如果存在挂起的迁移,我希望通过MSBuild停止生成过程 但我不想在构建项目时触发迁移目标 那么,如何使用Migratordotnet仅检查挂起的迁移? 我只是想用它作为一个标志来停止我的构建过程 提前谢谢 我认为Migratordotnet不支持它 它们仅为旨在执行迁移的MSBuild提供1个目标。。因此,没有其他方法可以与它交互以检查迁移 检查,其中显示一些代码,允许您检查是否存在挂起的迁移。在MSBuild中设置目标以运行此代码,并在目标返回一个或多个可用迁移时从目标退出,这是很有可能的

如果存在挂起的迁移,我希望通过MSBuild停止生成过程

但我不想在构建项目时触发迁移目标

那么,如何使用Migratordotnet仅检查挂起的迁移?
我只是想用它作为一个标志来停止我的构建过程

提前谢谢

我认为Migratordotnet不支持它

它们仅为旨在执行迁移的MSBuild提供1个目标。。因此,没有其他方法可以与它交互以检查迁移

检查,其中显示一些代码,允许您检查是否存在挂起的迁移。在MSBuild中设置目标以运行此代码,并在目标返回一个或多个可用迁移时从目标退出,这是很有可能的

下面是一个控制台应用程序的一些基本代码,它将另一个问题的代码整合在一起。如果迁移可用或不可用,它只向控制台窗口写入一条消息。你需要将它扩展到你的需要,但它应该是有效的
TestMigration1
应替换为迁移所在程序集中的某个迁移类。显然,您需要从控制台应用程序中引用该项目

internal class Program {
    private static void Main(string[] args) {
        Assembly asm = Assembly.GetAssembly(typeof (TestMigration1));
        const string myConnectionString =
            "Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;";
        ITransformationProvider provider = ProviderFactory.Create("SqlServer", myConnectionString);
        var loader = new MigrationLoader(provider, asm, false);
        List<long> availableMigrations = loader.GetAvailableMigrations();

        Console.WriteLine(availableMigrations.Count > 0 ? "Migrations available" : "No migrations");
    }
}
内部类程序{
私有静态void Main(字符串[]args){
Assembly asm=Assembly.GetAssembly(typeof(TestMigration1));
常量字符串myConnectionString=
“数据源=myServerAddress;初始目录=myDataBase;用户Id=myUsername;密码=myPassword;”;
ITransformationProvider provider=ProviderFactory.Create(“SqlServer”,myConnectionString);
var loader=新的MigrationLoader(提供程序、asm、false);
List availableMigrations=loader.GetAvailableMigrations();
Console.WriteLine(availableMigrations.Count>0?“迁移可用”:“无迁移”);
}
}

告诉我是否还有其他方法?我想从MSBuild外部执行,无论如何,您能推荐一些示例代码吗?使用另一个问题中的代码,您只需编写一个小型控制台实用程序,在MSBuild之外执行它,并以您喜欢的方式执行它。该代码的最后一行返回将db迁移到当前版本的挂起迁移数。如果返回零,则没有要执行的迁移。Hm。。这并不完全是我想要的,但如果这解决了我的问题,我将返回。我认为您需要仔细思考您的问题,然后解释您的构建过程到底是什么。如果您的过程实际上只是构建一个项目或解决方案,那么不,停止构建过程是行不通的,因为您需要在检查挂起的迁移之前完成构建。