繁体   English   中英

我可以在同一Visual Studio解决方案中使用.NET 4和.NET 4.5吗(使用Entity Framework时)?

[英]Can I target .NET 4 and .NET 4.5 in the same Visual Studio solution (when using Entity Framework)?

我有一个Visual Studio 2012解决方案,其中包含一个Web应用程序和一些客户端代码。 应用程序的结构方式是,有一个共享的类库用于数据访问。

客户端代码需要以.NET 4为目标,因为我会将其部署到可能没有.NET 4.5的计算机上。 由于我控制着Web服务器端,因此我可以假设使用.NET 4.5。

现在,客户端和服务器端都需要使用数据访问库,因此它只需要使用.NET4。但是,这导致了我意想不到的问题。

数据访问库使用实体框架。 作为.NET 4,它使用EF版本4.4。 但是,该Web应用程序还需要引用Entity Framework,在.NET 4.5中,它使用EF版本5.0。

当我尝试运行应用程序时,这会导致(间歇性)错误。 (我正在同一台计算机上同时从VS2012启动网站和客户端代码)。

如果我仅在浏览器的地址栏中输入一个URL,该网站就可以正常运行-它能够使用数据访问库来毫无问题地获取数据。 但是,当我使用客户端应用程序时,它(通常,并非总是如此!)从Web端返回服务器错误,说它(Web端)无法加载Entity Framework程序集:

无法加载文件或程序集'EntityFramework,Version = 5.0.0.0,... ...找到的程序集的清单定义与程序集引用不匹配。

我不确定这是否仅仅是一个问题,因为我是在同一台机器上的调试器中运行,还是一旦部署就会​​影响我的应用程序。

我在这里做疯狂的事情,还是应该正常工作?

对于任何尝试此操作的人:只要您在单击“运行”之前执行“构建解决方案”,它便会起作用(在我的情况下,这将以调试模式启动客户端应用程序,但无需调试即可启动Web应用程序)。 要同时调试Web应用程序,我需要显式启动该应用程序(单击鼠标右键,调试),然后启动客户端应用程序(单击鼠标右键,调试)。 同样,每次都需要“构建解决方案”(有时需要“重建”)。

编辑 :aaaannnndd ...突然停止工作。 但是,我发现,当我在VS中运行客户端应用程序时,它会使用客户端应用程序所使用的目录在Web项目bin目录中构建/更新EF DLL,这会在网站出现后立即导致版本不匹配被访问,因为该网站需要更高版本。 要解决此问题,我现在有一个批处理文件,它将正确版本的EF DLL复制到网站bin目录中。 因此,我可以启动客户端应用程序,然后执行我的批处理文件,然后启动网站。 很痛苦,但至少现在可以正常工作了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM