Visual Studio:[CS0433]类型Func <t,tresult =“”>同时存在于<system.core(3.5.0.0)=“”>和<mscorlib(4.0.0.0)=“”>

时间:2019-02-01 05:36:27

标签: c# .net visual-studio

我最近在Visual Studio上遇到了很多麻烦,但是我无法解决这个问题。尝试重建我的项目时,我得到:

  

错误CS0433:类型'Func'同时存在于'System.Core,版本= 3.5.0.0,区域性=中性,PublicKeyToken = b77a5c561934e089'和'mscorlib,版本= 4.0.0.0,区域性=中性,PublicKeyToken = b77a5c561934e089 '

唯一可行的方法是手动添加对csproj文件的引用。

<Reference Include="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"/>

这给我一个新的错误:

  

错误CS1703:已导入具有相同标识的多个程序集:“ C:\ Program Files(x86)\参考程序集\ Microsoft \ Framework \ v3.5 \ System.Core.dll”和“ C:\ WINDOWS \ Microsoft .Net \ assembly \ GAC_MSIL \ System.Core \ v4.0_4.0.0.0__b77a5c561934e089 \ System.Core.dll'。删除重复的引用之一。

现在在项目中找不到3.5.0.0参考,但是可以在对象浏览器中看到它,而没有删除它的选项:

Object Browser

在app.config文件中,我还尝试将引用重定向到较新的版本:

<dependentAssembly>
    <assemblyIdentity name="System.Core" publicKeyToken="b77a5c561934e089" culture="neutral" />
    <bindingRedirect oldVersion="3.5.0.0" newVersion="4.0.0.0" />
</dependentAssembly>

什么都不会改变。

我一直在寻找和努力解决这个问题超过一个星期,对此我将不胜感激。

4 个答案:

答案 0 :(得分:1)

弄清楚这个问题真是太痛苦了。经过数小时的努力,终于找到了system.core.dll的“ 3.5”版本问题。 因此,我将“ system.core.dll”的“ 4.0 ..” 版本从Program Files(X86)文件夹复制到了我的Application的References或Bin文件夹中。对我来说,它位于(C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.5)下。 另外,如果需要,请按照原始问题中的说明手动添加对csproj文件的引用。 希望能帮助到你。叹气:)

答案 1 :(得分:1)

打开 windows 控制面板 > 程序和功能 > 打开或关闭 windows 功能,并禁用 .Net Framework 3.5。 video

这种方式对我有用。

答案 2 :(得分:0)

两种方式。 1.使用“使用xxx = .....” 2.编写一个类包装器以避免引用。

答案 3 :(得分:0)

您可以定义自己的代表:

public delegate T MyFunc<T1, T>(T1 item); public delegate T MyFunc<T1, T2, T>(T1 item1, T2 item2); ...