0

MigratorDotNet を使用して移行を適用しようとして、次の実行を取得しました:

No public classes with the Migration attribute were found

ビルドは一般的に分離され、構成エラーは表示されません。

次の内容で構成ファイルを作成しました。

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <ProjectRoot Condition="'$(ProjectRoot)' == ''">$([System.IO.Directory]::GetParent($(MSBuildProjectDirectory)))</ProjectRoot>
        <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
        <ClassLibraryOutputDirectory>bin\$(Configuration)</ClassLibraryOutputDirectory>
        <MigrationsProject>$(ProjectRoot)\Solution\SqlMigrator\SqlMigrator.csproj</MigrationsProject>
    </PropertyGroup>

    <Import Project="Migrator.Targets" />

    <Target Name="Build-Migrations">
        <MSBuild Projects="$(MigrationsProject)" Targets="Build">
            <Output TaskParameter="TargetOutputs" ItemName="MigrationAssemblies" />
        </MSBuild>

        <Message Text="Built: @(MigrationAssemblies)"/>
    </Target>

    <Target Name="Migrate" DependsOnTargets="Build-Migrations">
        <Message Text="Migrating: @(MigrationAssemblies)"/>
        <Migrate Provider="MySql"
            Connectionstring="server=localhost;User Id=root;password=;database=loveproject"
            Migrations="@(MigrationAssemblies)" />
    </Target>
</Project>

テスト移行が 1 つあります。

namespace SqlMigrator
{
    using Migrator.Framework;
    using System.Data;

    [Migration(20140401110402)]
    public class TestMigrate : Migration
    {
        public override void Up()
        {
            this.Database.ExecuteNonQuery(@"CREATE TABLE example (id INT, data VARCHAR(100));");
        }

        public override void Down()
        {

        }
    }
}

移行の実行: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe mbuild.proj /t:Migrate

4

1 に答える 1

0

問題が見つかりました。この問題は、プロジェクト内の Migrator のバージョンにあり、msbuild から呼び出すことができました。

Nuget から最新バージョンをインストールし、web 側から実行可能ファイルをダウンロードして、msbuild (Migrator.MSBuild.dll) に組み込みます。これは、私のプロジェクトと msbuild スクリプトで使用された 2 つ以上のバージョンでした。

于 2013-03-28T16:18:57.863 に答える