为什么已经从另一个项目添加了此引用,为什么还要添加相同的引用 - c#

这是一个问题,假设我有两个项目:

应用程序(控制台)
DataAccess(类库)。

在DataAccess项目中,有一个从DbContext继承的DataContext类。

public class DataContext : DbContext {...}

在Application项目中,我添加了DataAccess参考,在main方法中,添加了以下语句:

using (var context = new DataContext ()){...}

但是Resharper秀

DbContext类型是在未引用的程序集中定义的。

为什么需要再次添加相同的程序集?

为什么无法从DataAccess.dll获取DbContext定义?

(DataAccess项目已通过NuGet添加了EntityFramwork.dll)

编辑1:当一个类型继承了另一个类型(例如:DataContext从DbContext继承)时,为什么编译器没有在同一个dll中包含DbContext的定义,所以在另一个项目中,我们只需要添加对子类型的dll的引用?

参考方案

因为您的类库(.dll)不“包含”其依赖程序集。因此,如果要执行的程序集要使用您的类库,则也需要引用依赖程序集。

(与配置文件有点相同,它们也没有被嵌入,因此,即使您在类库的配置文件中定义了一个连接字符串,也仍然需要将其定义到启动应用程序中)

如果您确实想将库嵌入到单个dll中,则可以查看ILMerge,但建议仅在启动应用程序中包含所需的所有库。

(我推荐)另一个很好的是Costura.Fody。您只需要通过NuGet进行安装,就无需任何配置,下次生成应用程序时,它将把所有内容都嵌入到类库中。

如何在命令行上更改连接字符串以在迁移到Entity Framework Core中的新数据库时更新数据库 - c#

首先在ASP.NET Core和EF Core代码中,我有一个多租户的webapp。创建新租户时,我想更改连接字符串,在其上添加迁移,然后更新。从命令行,添加迁移无法在租户上获得动态的连接字符串,因此在应用程序首次以新租户开始时,我没有有效的连接字符串来创建新数据库。有什么解决办法吗?谢谢 参考方案 您在找这个吗?编辑:这是为EF 6.1Update-Dat…

从JAVA调用方法C#.NET - java

我有一个C#.NET项目中创建的dll,我想从Java程序中调用方法。我想知道是否存在实现此目标的机会,然后遇到了JNA和JNI。我应该使用哪一个?有什么建议么?我只需要在使用C#.NET编写的类中调用方法并处理Java程序的结果即可。 参考方案 这取决于您的应用程序,但是您可以将C#DLL放在服务中,例如WCF并以这种方式将功能公开给Java代码。使用ws…

模块化C#Compact Framework 2.0应用程序 - c#

我们目前正在开发新的手持软件。我无法讨论应用程序的性质,因此我将使用一个示例。我们正在设计用于管理学校的手持软件。我们希望对系统的各个方面进行模块化,以便不同的学校可以使用不同的功能。我们的系统将从主菜单和登录屏幕开始。我希望这可以作为系统的基础,并成为要添加模块的位置。即我将有一个名为SchoolPda的项目。然后,我想拥有不同的模块。即,我想要一个注册模…

从ASP.NET 1.1转换为ASP.Net 3.5后,单选按钮停止工作 - javascript

[我在下面以FYI的形式发布我们的问题和解决方案。如果您有Microsoft或代表机构对此问题的正式声明,我会将其标记为答案。否则,我下面的帖子将作为答案]。问题:我们采用了ASP.Net 1.1程序,并将其转换为ASP.Net 3.5。该页面最初正确显示,默认情况下选中一个单选按钮,并显示一个项目列表(“列表A”)。当我们单击另一个单选按钮时,它将正确显示…

ASP.NET Core-在Singleton注入上存储库依赖项注入失败 - c#

我正在使用SoapCore为我的ASP.NET Core MVC应用程序创建Web服务。我正在使用Entity Framework Core和简单的存储库模式来获取我的数据库数据。我通过Startup.cs中的.AddSingleton()注入存储库类:services.AddSingleton<IImportRepository, ImportRep…