2016-08-01 105 views
0

我的解決方案包含2個項目。混合模式C++/CLI System.IO.FileLoadException

第一個項目是一個C++ Win32應用程序,第二個項目是一個C#庫,它管理2個其他C#庫,這些C#庫不是由我構建的。背後的想法是構建一個處理這些其他2個C#庫的C#庫。

現在,這2個C#庫是爲.NET 3.5構建的,我也爲.NET 3.5構建了我的C#項目。

我創建了一個C++ Wrapper,它工作得很好。嘗試創建一個類的對象時出現問題,我的C#庫從另一個其他庫中獲取。

Mixed mode assembly is built against version 'v2.0.50727' of the runtime and cannot be loaded in the 4.0 runtime without additional configuration information. 

現在,我一直在尋找十多個帖子,這個問題已經發布。他們都沒有解決我的問題。我已經爲我的可執行文件(我的C++項目)以及我的C#庫嘗試了幾個不同的配置文件。

我已經試過

<startup useLegacyV2RuntimeActivationPolicy="true"> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> 
    <supportedRuntime version="v2.0.50727"></supportedRuntime> 
    </startup> 

和其他一些的人的一致好評。

+0

嘗試到處使用.NET的相同版本... – Phil1970

+0

你應該有很多更關心的是錯誤信息。你說你的目標是3.5,但是錯誤清楚地表明正在使用.NET 4。這隻有在已經有一個.exe.config文件被使用,而不是你寫的。你的VS版本老舊,需要更新。 –

+0

@ Phil1970我使用.NET 3.5 for c#相關的所有內容 – Sean

回答

0

看來你的項目中有一些v2.0.50727 dll。試試這個:

編輯您的App.config文件,並添加:

<configuration> 
    <startup useLegacyV2RuntimeActivationPolicy="true"> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> 
    </startup> 
</configuration>