我需要在Server v2.0中构建一个DLL,以便从Server 2008调用一个外部DLL ()。这个dll必须在SQLV2.0中才能与我们的Server版本兼容,并且只是为了在Server和在Server V4.5中开发的其他C#特性之间架起一座桥梁。因此,我重新创建了另一个在.Net V4.5中构建的DLL,但是我无法编译它!我有一个休整警告:
警告MSB3258:无法解析主引用"my_dll“,因为它间接依赖于.NET框架程序集"mscorlib、Version=4.0.0.0、Culture=neutral、PublicKeyToken=b77a5c561934e089”,该程序集的版本"4.0.0.0“高于当前目标框架中的版本"2.0.0.0”。
我们可以忽略程序集版本的可兼容性吗?或者,我们可以有另一个解决方案来调用Server 2008中在.net V.4.5中开发的任何函数吗?
发布于 2017-01-29 06:33:04
我不确定我是否在跟踪您的问题,但是要回答它,只需要将项目依赖项更改为.NET 4.5。.NET框架可以引用其他框架版本,但您必须考虑依赖的顺序。如果2.0使用的是4.0库,那么它将失败,因为它没有自己的组件引用。当您的项目被编译时,它被放置到一个单独的程序集中,并且该程序集必须引用所使用的所有成分。但是,如果您的项目是独立的dll(听起来是这样的),那么您可以在它们之间引用,只要4.0成员没有公开在程序集中。但是,这意味着dll需要安装4.0的环境才能运行。
为了运行相同程序集的不同版本,需要将assemblyBinding添加到项目配置中。
这是有点难以理解,但看看这篇文章,看看它是否能帮助你更好地理解如何实现这一点。
发布于 2017-01-29 06:41:20
根据这个answer here,可以通过公开COM所需的组件来引用.Net 4.5程序集。所有版本的.Net都是以COM为核心的,因此它可以作为“最低公分母”的通信渠道。根据您的需求,您可能还想了解如何使用命名管道、IPC甚至Web服务。
https://stackoverflow.com/questions/41913804
复制相似问题