从3.5版本调用.NET 4库

16

我需要调用.NET 4.0中的System.Xaml库,但是如果你的项目针对3.5版本,是否可以调用此库?


3
好的,你可以将另一个库编译为可执行文件,并可能在其上添加包装器,然后通过套接字、文件、Shell等方式使这两个模块进行通信,但那肯定会很丑。 - Hamish Grubijan
1
请查看微软的响应式扩展。它是一个针对3.5版本的向后兼容库。 - David d C e Freitas
4个回答

11

不行。你需要将你的项目目标设置为在.NET 4中运行,并使用CLR v4,才能使用.NET 4程序集。


另外,这里没有真正的优势。只需将您的应用程序更改为针对.NET 4进行目标设置即可。如果您要添加对.NET 4框架程序集的依赖项,那么最好一开始就将其目标设置为.NET 4...


问题是,目前我只有VS2008,而我需要在.NET 4.0中使用Xaml的特定功能(序列化)。我希望能够通过反射或其他方式加载它。 - mrwayne
你很快就可以获得VS2010。重新排列项目的顺序。 - Hamish Grubijan
@mrwayne:您可以随时使用VS 2010 Express(现已提供):http://www.microsoft.com/express/ - Reed Copsey
是的,不幸的是这比那要复杂一些。我在一个需要整个开发团队升级的工作场所,这意味着软件需要进行向后兼容性测试,以便迁移到 .net 4 等等。 - mrwayne
2
@mrwayne:如果你在这种环境中工作,添加对.NET 4的依赖可能也不是一个好主意。我建议等到你的公司完全迁移到.NET 4再考虑。 - Reed Copsey

9

2

不行,因为程序集被映射到不同的位置了。有一件事情可以做,但是比较麻烦,就是在内存中创建一个类型来重新组装你的.NET 4.0 dll。

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

如果你对IL不太了解,最好不要尝试这样做。


0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接