c# - 如何仅对选定类型的数据库使用 FluentMigrator.Runner

标签 c# fluent-migrator

目前,当我将 FluentMigrator.Runner nuget 包添加到 c# 项目时,它会自动安装所有其他相关的 nuget 包:FluentMigrator.Runner.Db2FluentMigrator.Runner . Firebird

但我只需要SqlServer的支持。我无法卸载所有这些辅助包,因为 FluentMigrator.Runner 依赖于它们。

如果我强制删除引用,我只会遇到运行时错误:

Could not load file or assembly 'FluentMigrator.Runner.Db2, Version=3.0.0.0, 
Culture=neutral, PublicKeyToken=aacfc7de5acabf05' or one of its dependencies. 
The system cannot find the file specified.

这使我的 C# 项目引用了很多无用的 dll。特别是 Sql Server Ce native 文件。 如果我只需要 SqlServer,有没有办法摆脱 Db2、Firebird 和其他实现?

我使用 Fluent Migrator 版本 3 和 .Net 4.7.1

最佳答案

这里是解决这个问题的方法:

  1. 删除项目对其他数据库运行器的引用;
  2. 删除“packages.config”文件中其他数据库运行器的条目;
  3. 删除解决方案“packages”文件夹中其他数据库运行器的所有文件;
  4. 使用记事本从 .csproj 文件中删除这些行:

<Import Project="..\packages\FluentMigrator.Runner.SqlServerCe.3.1.3\build\netstandard2.0\FluentMigrator.Runner.SqlServerCe.targets" Condition="Exists('..\packages\FluentMigrator.Runner.SqlServerCe.3.1.3\build\netstandard2.0\FluentMigrator.Runner.SqlServerCe.targets')" />
  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
    <PropertyGroup>
      <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
    </PropertyGroup>
    <Error Condition="!Exists('..\packages\FluentMigrator.Runner.SqlServerCe.3.1.3\build\netstandard2.0\FluentMigrator.Runner.SqlServerCe.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\FluentMigrator.Runner.SqlServerCe.3.1.3\build\netstandard2.0\FluentMigrator.Runner.SqlServerCe.targets'))" />
  </Target>

关于c# - 如何仅对选定类型的数据库使用 FluentMigrator.Runner,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50267109/

相关文章:

c# - 从 C# 中的 Process.Start 启动 cmd.exe 时,Telnet 无法识别命令

c# - System.convert.ToString() 与 C# 中的显式类型转换

c# - 为什么我的 c# paint 方法内存不足?

c# - 如何使用 FluentMigrator 删除列?

c# - 在 Fluent Migrator 中回滚到以前的版本

c# - 为什么更新字符串 INotifyPropertyChanged 属性而不更新 List<string>?

c# - 使用 C# 和 Win API 移动屏幕键盘 (osk.exe)

c# - FluentMigrator Execute(string template, params object[] args) 中的大数据出错;

c# - 我可以使用扩展方法通过 Fluent Migrator 添加列和外键约束吗?

c# - 从代码执行 FluentMigrator 迁移