【问题标题】:Merge dll's with Costura, Microsoft.Data.Sqlite throws errors and cannot add-migrations etc将 dll 与 Costura、Microsoft.Data.Sqlite 合并会引发错误并且无法添加迁移等
【发布时间】:2020-08-22 18:46:43
【问题描述】:

我有一个至少有 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");

【问题讨论】:

    标签: c# visual-studio sqlite merge fody-costura


    【解决方案1】:

    重复:Using Fody Costura with Entity Framework Core migrations

    引用帖文:

    感谢 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。这个包是必需的 实体框架核心工具工作。确保您的启动项目是 正确,安装软件包,然后重试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-06
      • 2021-02-20
      • 2021-11-26
      • 1970-01-01
      • 2017-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多