这实际上是question的一个跟进,我昨天问过在Visual C#2010中使用旧DLL的问题。我添加了配置文件,DLL运行良好。我遇到的问题是我希望避免让我的整个项目在传统模式下运行。
我通过创建一个新的控制台项目来解决这个问题,该项目使用命令行访问我需要的所有DLL函数并读取我的主项目中的输出。这样它就可以作为一个单独的组件,我不必担心遗留模式会影响我的主项目中的任何内容。
问题是,从长远来看,我觉得这确实会减慢我的应用程序,因为我正在开发的东西需要快速,我想知道是否还有另一种方法可以做到这一点。正如我在上一个问题中提到的,我无法在4.0中重建DLL。
谢谢,
PM
答案 0 :(得分:3)
听起来你真的误解了那个设置意味着什么。它当然并不意味着你的项目“以传统模式运行”,而是完全相反。您的旧DLL将使用.NET 4.0 CLR版本与该设置。而不是4.0中提供的 new 策略允许它与CLR的旧版本一起运行。也称为进程内并排功能。然而,新政策不支持混合模式程序集,这就是它抱怨的原因。
你真的不希望在命令行重定向的单独.exe中运行它,这太可怕了。它不仅速度慢,而且当“主机”进程因未处理的异常而死,但主应用程序没有注意到时,它会使您的应用程序不可靠。很难诊断。
答案 1 :(得分:1)
这取决于你调用它的频率。如果很少,一个过程应该没问题。如果你经常调用它,那么将花费大量时间来创建进程,重新加载dll等。你可以通过在控制台应用程序上运行NGEN来改善这一点,但我怀疑一个更好的选择可能是一些基本的IPC通信到长期运行的exe或服务。但请保持通信轻量级。
另一个问题是:您是否已经分析了基于流程的方法,看看这实际上是一个问题?