从3.5调用.NET4库

从3.5调用.NET4库,.net,.net-3.5,.net-4.0,.net,.net 3.5,.net 4.0,我需要调用.NET4.0中的System.Xaml库。如果您的项目目标是3.5,是否可以调用此库?否。您需要将项目目标设置为在.NET 4中运行,并使用CLR v4,以便使用.NET 4程序集 另一方面,这里没有真正的优势。只需将应用程序更改为目标.NET4。如果您要添加对.NET 4 framework程序集的依赖项,您最好首先以.NET 4为目标…不,您不能以不同的方式映射程序集,您可以做的一件事是在内存中创建一个类型来重新组装您的NET 4.0 dll 你可以使用CECIL来获取IL指令

我需要调用.NET4.0中的System.Xaml库。如果您的项目目标是3.5,是否可以调用此库?

否。您需要将项目目标设置为在.NET 4中运行,并使用CLR v4,以便使用.NET 4程序集



另一方面,这里没有真正的优势。只需将应用程序更改为目标.NET4。如果您要添加对.NET 4 framework程序集的依赖项,您最好首先以.NET 4为目标…

不,您不能以不同的方式映射程序集,您可以做的一件事是在内存中创建一个类型来重新组装您的NET 4.0 dll

你可以使用CECIL来获取IL指令


如果您不太了解IL,请不要尝试这样做。

这个问题类似于“如何在.NET 1.x应用程序中使用.NET 2程序集”。添加新CLR的程序集作为参考是不可能的,但正如Hamish指出的,进程间通信可能会有所帮助。

这里有一种类似的解决方案,它涉及在COM中包装.NET 4 DLL方法,然后从.NET 3.5调用COM包装器:


好的,您可以将另一个库编译为exe,也许可以向其中添加一个包装器,并使两个模块通过套接字、文件、shell进行通信。。。但这肯定会很难看。看看微软的。这是一种3.5版本的向后兼容库,问题可能是,目前我只有VS2008,我需要.NET4.0中的Xaml(序列化)的一个特殊功能。我希望能够加载反射或其他东西。你可以很快得到VS2010。重新调整项目顺序。@Wayne先生:您可以随时使用VS 2010 Express(现在可用):是的,不幸的是,它比这更复杂,我的工作场所需要整个开发团队升级,这意味着软件需要在移动到.net 4 ect时进行向后兼容性测试。@韦恩先生:如果您在那种环境中工作,在.net 4上添加dep.可能也不是一个好主意。我会等到你们公司完全迁移到.NET4。