gpt4 book ai didi

c# - 不在引用的程序集中键入 Foo,但我使用的是扩展类型 Foo 的类型 Bar

转载 作者:太空宇宙 更新时间:2023-11-03 13:34:07 25 4
gpt4 key购买 nike

以下代码行会产生错误:

private MyContext context;

错误:

The type 'System.Data.Entity.DbContext' is defined in an assembly that is not referenced.

MyContext 扩展了 DbContext 并且 MyContext 在引用的程序集中定义。我从未在 Java 中见过这种错误。 为什么编译器找不到在依赖项引用的程序集中定义的类型?

最佳答案

因为那个程序集可能不存在。

想想看:

您已经创建了一个完美的 DLL A,它可以与 COM 端口一起使用。但是,它引用某种 System.IO.Compports.dll 库以按预期精确工作。

然后,有人想使用您的 A 库并引用它。他怎么知道System.IO.Compports.dll库存在于工程或者bin文件夹或者system32目录下呢?或者去哪里找?没有“某人”正在开发的 EXE 项目的直接引用。

直接引用总是被复制到输出目录,除了预安装的——比如 .NET Framework 的——以确保可执行文件能够找到它们。

The type 'System.Data.Entity.DbContext' is defined in an assembly that is not referenced.

此类型可能在具有多个版本的多个库中定义,而 visual studio 无法查找每个库以检查它是否与所需版本匹配 - 这就是项目需要具有直接引用的原因,这就是原因几乎所有 .net 的 DLL 仅引用它们自己,以免因额外引用而打扰您。

关于c# - 不在引用的程序集中键入 Foo,但我使用的是扩展类型 Foo 的类型 Bar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19288869/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com