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

时间:2014-09-15 15:49:21

标签: c# .net entity-framework .net-assembly

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

  • 一个包含我的edmx图
  • 实体框架
  • 一个用于核心业务
  • 和一个用于我的网络应用

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

  

{"无法加载文件或程序集' EntityFramework,Version = 4.4.0.0,   Culture = neutral,PublicKeyToken = b77a5c561934e089'或其中一个   依赖。系统找不到该文件   指定。":" EntityFramework,Version = 4.4.0.0,Culture = neutral,   公钥= b77a5c561934e089"}

我收到此错误,因为我的实体框架程序集未发布。我的服务器上缺少实体框架dll文件。我知道为什么。我没有在我的网络应用程序项目中引用它,因为此项目中不需要此程序集。在我的另外两个项目中引用了程序集。

我可以通过在我的网络应用中添加实体框架参考来轻松解决我的问题。我能这样做吗?是的,但添加对项目不直接使用的程序集的引用是否是一个很好的编程?我该怎么办?


更多信息

  • 一个用于实体框架:参考实体框架
  • 一个用于我的核心业务:引用实体框架,因为我在这里操纵我的实体
  • 和一个用于我的网络应用:网站,它就像UI和核心业务之间的外观。我不会在这里引用或使用实体框架。

我没有任何编译错误>我只有一个运行时错误,因为我的实体框架没有发布。

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

1 个答案:

答案 0 :(得分:0)

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

检查此答案:Copying indirectly referenced assembly to output directory - assembly is missing

  

引用不会自动级联,因此添加引用   OLAF.Tools也不添加对SQLXML的引用。如果你想   用你的exe部署SQLXML,那么最方便的方法就是这样做   是从您的exe显式添加对SQLXML的引用,并设置它   复制本地。没有它,它就不会被部署。