在C#.Net 4.0中使用旧DLL

在C#.Net 4.0中使用旧DLL,c#,.net,C#,.net,这实际上是我昨天问的关于在Visual C#2010中使用旧DLL的问题的一个后续问题。我已经添加了配置文件,DLL运行良好。我遇到的问题是,我希望避免让整个项目以遗留模式运行 我创建了一个新的控制台项目,通过命令行访问DLL中需要的所有函数,并读取主项目中的输出,从而解决了这个问题。这样它就可以作为一个独立的组件,我不必担心遗留模式会影响我的主项目中的任何内容 问题是,从长远来看,我觉得这会真正减慢我的应用程序的速度,而且因为我正在开发的东西需要更快,我想知道是否有其他方法可以做到这一点。正如

这实际上是我昨天问的关于在Visual C#2010中使用旧DLL的问题的一个后续问题。我已经添加了配置文件,DLL运行良好。我遇到的问题是,我希望避免让整个项目以遗留模式运行

我创建了一个新的控制台项目,通过命令行访问DLL中需要的所有函数,并读取主项目中的输出,从而解决了这个问题。这样它就可以作为一个独立的组件,我不必担心遗留模式会影响我的主项目中的任何内容

问题是,从长远来看,我觉得这会真正减慢我的应用程序的速度,而且因为我正在开发的东西需要更快,我想知道是否有其他方法可以做到这一点。正如我在上一个问题中提到的,我无法在4.0中重建DLL

谢谢


PM

这取决于你打电话的频率。如果很少,一个过程应该是好的。如果你经常这么说,那么大量的时间将花费在进程创建、重新加载DLL等方面。你可以通过在控制台应用程序上运行NGEN来改善这一点,但我怀疑更好的选择可能是对长时间运行的exe或服务进行一些基本的IPC通信。但是要保持通信的轻量级


另一个问题是:您是否分析了基于流程的方法,以了解这是否真的是一个问题?

听起来您确实误解了该设置的含义。当然,这并不意味着您的项目“在遗留模式下运行”,相反。具有该设置的旧DLL将使用.NET 4.0 CLR版本。而不是4.0中提供的新策略,该策略允许它与旧版本的CLR一起运行。也称为进程内并行功能。但是,新策略不支持混合模式程序集,这就是它抱怨的原因


你真的不想用命令行重定向在一个单独的.exe中运行它,这太可怕了。它不仅速度慢,而且当“主机”进程因未处理的异常而终止时,会使你的应用程序不可靠,但你的主应用程序不会注意到。很难诊断。

我想我可以修改console项目,让它在后台进程中永久运行以访问它,这样我就不必担心每次都加载它了。(我几乎经常需要它)。我真正想知道的是,是否有任何方法可以完全避免为此创建单独的项目和可执行文件。我同意重定向很可怕,这就是我来这里寻求帮助的原因。我仍然有点不确定这个设置到底做了什么,但是在以后的开发中我会遇到什么样的问题呢?(我以前遇到过这样的问题,更换所有东西都是一场噩梦,当发现这个设置导致了问题,而你已经完成了项目的一半)我试图在我的回答中解释这一点,也许谷歌会更有帮助。从长远来看,您当然应该担心项目中存在无法重新编译或升级的代码块。我帮不了你。