添加对项目未直接使用的程序集的引用是否正确?

我有一个由3个项目组成的解决方案。

  • 一个包含我的edmx图的Entity框架
  • 一个是我的核心业务
  • 和一个我的网络应用程序

当我在服务器或托管服务上发布我的代码时,我收到此运行时错误:

{“无法加载文件或程序集’EntityFramework,Version = 4.4.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089’或其中一个依赖项。系统找不到指定的文件。”:“EntityFramework,Version = 4.4.0.0, Culture = neutral,PublicKeyToken = b77a5c561934e089“}

我收到此错误,因为我的entity framework程序集未发布。 我的服务器上缺少entity frameworkdll文件。 我知道为什么。 我没有在我的Web应用程序项目中引用它,因为此项目中不需要此程序集。 在我的另外两个项目中引用了该程序集。

我可以通过在我的Web应用程序中添加entity framework引用来轻松解决我的问题。 我能这样做吗? 是的,但添加对项目不直接使用的程序集的引用是否很好? 我能做什么?


更多信息

  • 一个用于entity framework :参考entity framework
  • 一个用于我的核心业务 :参考entity framework,因为我在这里操纵我的实体
  • 还有一个用于我的网络应用程序 :网站,它就像UI和核心业务之间的外观。 我这里没有引用或使用entity framework。

我没有任何编译错误>我只有一个运行时错误,因为我的entity framework没有发布。

在这种情况下的Windows应用程序中,我没有在项目中引用我的dll,但我使用post build动作复制它。 我不知道在我需要发布或部署的Web应用程序中该怎么做。

您的问题是据我所知,间接引用的程序集不会被复制到输出目录。 因此,我认为最好的方法是在您的Web和Windows项目中添加对EntityFramework的引用。

检查以下答案: 将间接引用的程序集复制到输出目录 – 缺少程序集

引用不会自动级联,因此添加对OLAF.Tools的引用也不会添加对SQLXML的引用。 如果要使用exe部署SQLXML,那么最方便的方法是从exe中显式添加对SQLXML的引用,并将其设置为copy local。 没有它,它就不会被部署。