首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果在vs中的项目属性下设置com-interop,则无法注册用于db迁移的.Net程序集。

如果在vs中的项目属性下设置com-interop,则无法注册用于db迁移的.Net程序集。
EN

Stack Overflow用户
提问于 2020-09-10 14:06:13
回答 1查看 145关注 0票数 0

我想在Visual中创建一个C# .Net dll作为企业架构师的外接程序.这个dll必须注册为com-interop才能被Enterprise使用.

在这个dll中,我还想使用代码优先和nuget包microsoft.entityframework.core进行数据库迁移。如果未选中项目属性生成中的com-interop复选框,则此数据库迁移可以在visual studio中的paket管理器控制台中正常工作。如果检查过,我的dll无法编译。错误信息是:

程序集“.dll”不能注册。程序集“DisposeAsync,Version3.1.8.”中"Microsoft.EntityFrameworkCore.DbContext“类型的"Microsoft.EntityFrameworkCore”方法没有实现。

在我的原始代码中,我没有任何类型的处置或类似的函数。这是一个简单的项目,有几行代码。我试图在nuget包管理器中使用较早版本的Microsoft.EntityFrameworkCore来管理它,但是没有帮助。此外,我还在代码中重写了DisposeAsync函数,但这也没有帮助。

相关代码位于上下文类中,与DbContext的行相同:

代码语言:javascript
复制
using Microsoft.EntityFrameworkCore;

namespace ...

{

        public class .. : DbContext
   
        {

在谷歌,我找不到任何东西,所以请帮助我。

EN

回答 1

Stack Overflow用户

发布于 2021-06-23 07:36:43

这个问题可能是由您的项目中的不同组装版本以及您的插件集成的产品中引起的。

示例:

在project

  • Product中使用一些名为System.dll version 2.0的NuGet包,其中外接程序出于自身目的使用相同的程序集安装,但具有不同的版本(System.dll版本1.0)。当将外接程序加载到目标产品时,会加载所有必要的参考程序集,但是如果已经加载了同名的程序集,它使用加载的程序集(而不是构建时使用的实际程序集)。

  • 如果版本不同,您将得到一些奇怪的异常,比如问题中的异常或任何其他奇怪的东西。

尝试发现您需要在项目中更改哪个程序集版本,以避免dll版本不匹配。尝试使用FusionLog进行调查。请注意,问题dll可能不是Microsoft.EntityFrameworkCore,而是EntityFramework所依赖的任何程序集。不幸的是,没有直接的指导来解决你的问题。动态地将程序集添加到第三方程序集是一件非常棘手的事情。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63831448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档