1

App Harbor で次のビルド エラーが発生するインスタンスをデプロイしようとしています

Build FAILED.

"D:\temp\gcp22bmp.ggi\input\src\ShareBill.sln" (default target) (1) ->
"D:\temp\gcp22bmp.ggi\input\src\Sharebill.Database\Sharebill.Database.dbproj" (default target) (5) ->
  D:\temp\gcp22bmp.ggi\input\src\packages\TeamData\Microsoft.Data.Schema.SqlTasks.targets(5,3): error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\TeamData\Microsoft.Data.Schema.TSqlTasks.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk. [D:\temp\gcp22bmp.ggi\input\src\Sharebill.Database\Sharebill.Database.dbproj]

    0 Warning(s)
    1 Error(s)

これは、C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\TeamData に一般的に存在する SQL ターゲットが原因であることはわかっています。

展開サーバーには存在しません。

データベースを今すぐデプロイするにはどうすればよいですか? データベースを展開する他の方法はありますか。EF で最初にコードを使用したことはありませんが、データベースの移行を自動的に適用したいと考えています。

db プロジェクトを実行すると、スキーマの違いが自動的に検出され、変更がデータベースに適用されると想定しています。

4

1 に答える 1

0

AppHarbor でプロジェクトをホストし、FluentMigrator を使用てデータベースの変更をデプロイします。

実装は非常に簡単です。流暢なインターフェースを使用できるドキュメントに従うか、それを使用してSQLを実行することさえできます。

例として、Global.asax.cs の Application_Start から次を実行します。NOP MigrationMarker クラスと同じアセンブリに移行を配置するだけです。

        const string connectionString = @"Data Source=localhost, 1433;Initial Catalog=testdb;Integrated Security=SSPI;";
        Announcer announcer = new TextWriterAnnouncer(s => System.Diagnostics.Debug.WriteLine(s));
        announcer.ShowSql = true;

        var assembly = Assembly.GetAssembly(typeof(MigrationMarker));
        var migrationContext = new RunnerContext(announcer);

        var options = new ProcessorOptions
                          {
                              PreviewOnly = false, // set to true to see the SQL
                              Timeout = 60
                          };

        var factory = new SqlServer2008ProcessorFactory();
        var processor = factory.Create(connectionString, announcer, options);
        var runner = new MigrationRunner(assembly, migrationContext, processor);

        runner.MigrateUp(true);
于 2013-06-15T19:07:33.547 に答える