设置NAnt和FluentMigrator

3

我有一个涉及多个迁移的项目。我可以使用migrator.exe手动运行它,但是我很难让它与我更喜欢的NAnt一起工作。

我有一个*.build文件,其内容如下:

<project name="Migrations" xmlns="http://nant.sf.net/release/0.85/nant.xsd" default="migrate">
    <loadtasks assembly="../packages/FluentMigrator.1.0.3.0/tools/FluentMigrator.NAnt.dll" />    
    <target name="migrate" description="Migrate the database">
        <property name="version" value="-1" overwrite="false" />
        <migrate
              provider="sqlserver2008"
          connectionstring="data source=*********; Initial Catalog=*****;User Id=*******; Password=********;"
          target="./Migrations/bin/Debug/Migrations.dll"
              directory="Migrations"
          task="migrate"
              to="${version}" />
    </target>
</project>

当程序运行时,我会得到以下输出结果: 构建失败。
C:\projects\ThisProject\Migrations\migrations.build(3,3):
Failure scanning "C:\projects\packages\FluentMigrator.1.0.3.0\tools\FluentMigrator.NAnt.dll" for extensions.
    Could not load file or assembly 'file:///C:\projects\packages\FluentMigrator.1.0.3.0\tools\FluentMigrator.NAnt.dll' or one of its dependencies. An attempt was made to load a program with an incorrect format.

我在寻找depends.exe,但该网站似乎已经关闭了。如果我做错了什么,您有什么新的想法来解决这个问题吗?
======完整解决方案更新======
主席和armen.shimoon的答案是正确的。
第一步,我将我的FluentMigrator和FluentMigrator.Tools更新到1.0.5.0版本。工具仍然停留在1.0.3.0版本。
第二步是更新我的构建文件以引用.NET 4.0 dll。两者的组合解决了问题,但直到我引用了.NET 4.0 dll才显示出改进。
以下是我当前的.build文件,供日后参考:
<project name="Migrations" xmlns="http://nant.sf.net/release/0.85/nant.xsd" default="migrate">
    <loadtasks assembly="../packages/FluentMigrator.Tools.1.0.5.0/tools/anycpu/40/FluentMigrator.Nant.dll" />
    <target name="migrate" description="Migrate the database">
      <property name="version" value="-1" overwrite="false" />
        <migrate
              database="sqlserver2008"
          connection="data source=******; Initial Catalog=*****;User Id=*****; Password=*****;"
          target="../Migrations/bin/Debug/Migrations.dll"
          verbose="true"
          />
    </target>
</project>
2个回答

1

这让我遇到了另一个错误。更新问题以反映当前的问题,因为它仍适用于当前问题的标题。 - Clarence Klopfstein

1

这种情况最有可能的原因是NAnt在x86下运行,而你的FluentMigrator DLL在x64下运行。

另一个可能性是.NET目标框架版本。如果你的NAnt二进制文件是.NET 3.5,而FluentMigrator是.NET 4.0,它将无法正确加载。


最终给出了答案,因为这是我需要采取的最后一步。 - Clarence Klopfstein

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接