2015-09-07 88 views
1

我正在使用第三方COM對象,由於某種原因,它只適用於.NET版本2.0-3.5。 試圖在較高版本中使用它,導致此dll中的幾個方法中斷。 我的控制檯應用程序基於.NET 4.0,我不想降級以使其工作。在不同的.net框架版本中執行方法

我已經嘗試過像類似下面的app.config中添加舊版本的支持解決方案,但它不工作:

<startup useLegacyV2RuntimeActivationPolicy="true"> 
    <supportedRuntime version="v4.0.30319" /> 
    <supportedRuntime version="v2.0.50727" /> 
</startup> 

這只是一種猜測,但我認爲它有什麼做的CLR版本在2.0 - 3.5和4.0之間變化。

是否有任何方法在.NET 2.0的上下文中使用此COM對象從.NET 4.0控制檯應用程序執行方法?

+0

這是可能的的處理在同一時間,其中每個運行時將看到其他作爲本機代碼同時承載CLRv2和CLRv4運行時。我沒有自己嘗試過,所以我不能詳細說明,但[David Broman](http://blogs.msdn.com/b/davbr/archive/2010/08/25/profilers-in-process-side -by-side-clr-instances-and-a-free-test-harness.aspx)有一個博客,它在探查器開發的上下文中討論它(他提供了一個「免費測試工具」,可能可以作爲一個例子但該鏈接似乎已經死了)。 –

回答

0

我所知道的最簡單的方法就是創建一個使用.NET 2.0的獨立項目並進行所需的調用。例如。

.NET 4 console app references .NET 2 library project

+0

嗨@ tim -s我已經試過了,它不起作用。 當控制檯配置爲.NET 4時,輔助項目將作爲.NET 4運行。 嘗試運行:\t \t System.Runtime.InteropServices.RuntimeEnvironment.GetSystemVersion()並查看結果。 – nir