将 dll 与 Costura 合并,Microsoft.Data.Sqlite 抛出错误并且无法添加迁移等

Merge dll's with Costura, Microsoft.Data.Sqlite throws errors and cannot add-migrations etc

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

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

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

https://gyazo.com/4c2adaf6d279c562cee44b096f123ae5

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

您的启动项目 'x' 没有引用 Microsoft.EntityFrameworkCore.Design。 Entity Framework 核心工具需要这个包才能工作。确保您的启动项目正确,安装包,然后重试。

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

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

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

重复:

引自线程:

感谢 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,那么添加迁移会写道:

您的启动项目 'InstaGTO' 没有引用

Microsoft.EntityFrameworkCore.Design. This package is required for the Entity Framework Core Tools to work. Ensure your startup project is correct, install the package, and try again.