2016-08-01 74 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>