2010-05-10 128 views
13

我有一个针对.NET v3.5的2010项目。令人费解的是,我无法再构建v3.5项目。该项目没有添加任何引用。它甚至不会让我添加对System.Core的引用,因为它是由'构建系统'添加的。Visual Studio 2010不能再构建.NET v3.5

警告CS1685:预定义类型“System.Func”被在全球 别名 多个程序集定义;使用来自 定义 'C:\的Windows \ Microsoft.NET \框架\ v4.0.30319 \ mscorlib.dll中'

IFilter.cs(82,49):错误CS0433:类型 'System.Func' 在存在'c:\ Program Files (x86)\ Reference Assemblies \ Microsoft \ Framework \ v3.5 \ System.Core.dll' and 'c:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ mscorlib .dll'

看起来像是抢到4.0,但我不太清楚如何解决它。其他人遇到这个?

同事有这个相同的问题。花的Windows重新安装到纠正问题

我已经开了这一个错误:如果编译器设置为verbose我看到这个https://connect.microsoft.com/VisualStudio/feedback/details/558245/warning-cs1685-when-compiling-a-v3-5-net-application-in-visual-studio-2010

FrameworkPathOverride = Ç :\ WINDOWS \ Microsoft.NET \框架\ v4.0.30319

这是defined为:

指定mscorlib.dll 和microsoft.visualbasic.dll的位置。这个 参数相当于编译器vbc.exe 的 /sdkpath开关。

其他一些有趣的花絮:我一起创建了一个新项目,根本无法构建v3.5。我可以构建2.0,3.0,3.5客户端配置文件,4.0和4.0客户端配置文件,没有任何问题。 VB.NET可以构建v3.5,但C#不能。我试过重新安装.NET 3.5,4.0和Visual Studio 2010,但没有成功。 Visual Studio调试日志显示没有什么有趣的,安全模式不起作用。

试图避免在Windows重装...

编辑:我已经认识到别人都面临这个问题为好。 LinkLinkLink


重新安装好几倍。 Visual Studio卸载不会自行清理。我已经开发了一个虚拟机开发,直到我有机会重新安装我的主操作系统。

回答

7

的问题是造成这一post所做的更改。强制加载最新的CLR版本是造成问题的原因。小心!

+0

我有完全相同的问题,即使我删除了我在1中设置的注册表项(在链接中),甚至试图将它们设置为值0,但仍然无法在框架3.5中构建。你修复它没有重新安装? – sabanito 2011-08-29 16:37:18

+0

刚刚删除该密钥后,它开始工作。对不起:| – 2011-09-01 17:57:52

0

这里一个建议:

  1. 清洁您的解决方案,然后重试。如果没有成功进行第2步。
  2. 卸载通过右键单击该项目,并选择条目“卸载项目”
  3. 再次单击鼠标右键,选择“编辑项目”
  4. 确保项目目标正确framework版本查找和设置以下标记值:
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion> 
  • 清理项目的参考列表:
  • <ItemGroup> 
        <Reference Include="System" /> 
        <Reference Include="System.Data" /> 
        <Reference Include="System.Xml" /> 
        <Reference Include="Microsoft.CSharp" /> 
        ... 
    </ItemGroup> 
    

    确保不存在重复引用。

    我希望这会有所帮助。

    如果没有,备份您的项目文件,删除该项目,并重新添加到新的项目。这应该很有可能。

    +0

    感谢您的提示,但项目的目标是3.5,因此应该在项目文件中定义任何参考。 – 2010-05-10 20:55:53

    0

    我想有可能是在一个项目或解决方案文件中的4.0框架的引用 - 也许有不同的TargetFrameworkVersion元素。或者,bin或obj文件夹中的某些文件不同步。

    尝试清理解决方案,甚至手动删除bin和obj文件夹的内容。如果这没有帮助,只需将当前版本与Subversion中的上一个工作版本进行比较,或者比较您正在使用的版本控制系统,您应该看到发生了变化。

    +0

    看起来像是盒子,而不是项目。注意我的编辑... – 2010-05-10 21:02:45

    +0

    听起来不太可能,但是您是否在机器配置中查找了汇编重定向? – 2010-05-10 21:24:17

    +0

    我将如何去核实?谢谢 – 2010-05-10 21:28:04

    1

    小骗子: 打开VS210项目属性页OB建立先进的检测不引用mscorlib.dll中。 然后在文本编辑器打开该项目文件,并添加到引用:

    <Reference Include="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL" /> 
    

    再见

    0

    this post在Microsoft Connect,您可能能够通过添加一行到您的解决方案或项目来解决这个文件将AspNetCompiler的ToolPath设置为“C:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727”。

    0

    我已经多次看到此问题 - 解决方法可能非常简单。

    在我的情况下,有问题的VS项目包含许多虚拟目录(20)。

    一旦击中,我再次删除所有的虚函数迪尔斯,然后重新创建一个在时间和每次重建项目寻求这个erorr。

    当我添加两个虚拟背对背没有编译错误再次出现。

    的解决办法是删除最后VDIR,然后重建,恢复Vdirs然后重建。 就在那些通过有条不紊地重复一个过程,可以成为一个需要白天,晚上,深夜,并可能在当地酿造厂酿造好啤酒的“timevamp”或“sunktime”的过程中发现的那些喷嚏怪诞的东西。

    相关问题