目前,当我将 FluentMigrator.Runner nuget 包添加到 c# 项目时,它会自动安装所有其他相关的 nuget 包:FluentMigrator.Runner.Db2、FluentMigrator.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
最佳答案
这里是解决这个问题的方法:
- 删除项目对其他数据库运行器的引用;
- 删除“packages.config”文件中其他数据库运行器的条目;
- 删除解决方案“packages”文件夹中其他数据库运行器的所有文件;
- 使用记事本从 .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/