添加对项目未直接使用的程序集的引用是否正确?
我有一个由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。 没有它,它就不会被部署。