将 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 位于根文件夹中:(
所以...
- 有什么方法可以隐藏dll并在项目中拥有sqlite数据库吗?
- 或者除了无服务器数据库还有其他替代方案吗?什么适用于 Costura?
- 我对根文件夹中的某些 dll 没有问题,但不想要它们 50。
编辑:
当我将其称为嵌入式资源时,出现与图片中相同的问题。
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.
我有一个至少包含 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 位于根文件夹中:( 所以...
- 有什么方法可以隐藏dll并在项目中拥有sqlite数据库吗?
- 或者除了无服务器数据库还有其他替代方案吗?什么适用于 Costura?
- 我对根文件夹中的某些 dll 没有问题,但不想要它们 50。
编辑: 当我将其称为嵌入式资源时,出现与图片中相同的问题。
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.