如果存在待定迁移,我希望通过MSBuild停止我的构建过程。
但我不想在构建项目时触发Migrate目标。
那么,我如何只使用Migratordotnet检查待定迁移?
我只是想用它作为一个标志来阻止我的构建过程.. !!
提前致谢!
答案 0 :(得分:1)
检查this other question,其中显示了一些代码,以便您检查是否存在待处理的迁移。很可能在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");
}
}
答案 1 :(得分:0)
我认为Migratordotnet不支持它!
他们只为MSBuild提供1个目标,旨在执行迁移..所以没有其他方法可以与它进行交互以检查迁移。