0

我有一个至少有 50 个 dll 的项目。而且我不会在根文件夹中使用 .exe 应用程序。我正在使用 Fody/Costura 来解决这个问题。

但是...我想将整个数据库重写为sqlite。最终用户不需要配置的东西,对我来说是一个简单的解决方案。

但是 Costura 什么时候打开它不能让我使用 instance.Database.Migrate() 和许多其他命令。

https://gyazo.com/4c2adaf6d279c562cee44b096f123ae5

当我从 App.xaml.cs 中删除该上下文并尝试添加迁移时,它写道:

您的启动项目“x”没有引用 Microsoft.EntityFrameworkCore.Design。此包是 Entity Framework Core Tools 工作所必需的。确保您的启动项目正确,安装包,然后重试。

当我关闭 Costura 时,一切正常。但是dll位于根文件夹中:(所以...

  • 有什么方法可以隐藏 dll 并在项目中拥有 sqlite 数据库?
  • 或者还有其他替代无服务器数据库的方法吗?什么适用于 Costura?
  • 我对根文件夹中的一些 dll 没有问题,但不希望它们 50。

编辑:当我将其称为嵌入式资源时,与图片中的问题相同。

EmbeddedAssembly.Load("Project.Microsoft.Data.Sqlite.dll", "Microsoft.Data.Sqlite.dll");

4

1 回答 1

1

重复:将 Fody Costura 与 Entity Framework Core 迁移一起使用

引用线程:

感谢 Tronald 让我走上正轨。对于遇到此问题的其他任何人,对我来说,诀窍是排除所有 SQLitePCLRaw DLL,如下所示:

<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
  <Costura >
    <ExcludeAssemblies>
      SQLitePCLRaw.*
    </ExcludeAssemblies>
  </Costura>
</Weavers>

此解决方案适用于 Migrate(),但不适用于 add-migration xxx 这是一个小问题……我每次创建新迁移时都会卸载 fody。然后再次安装。

如果我不卸载 Fody,那么 add-migration 会写道:

您的启动项目“InstaGTO”未引用

Microsoft.EntityFrameworkCore.Design。此包是 Entity Framework Core Tools 工作所必需的。确保您的启动项目正确,安装包,然后重试。

于 2020-05-07T20:48:36.780 回答