C# Visual Studio 2010无法再生成.NET v3.5

C# Visual Studio 2010无法再生成.NET v3.5,c#,.net-3.5,visual-studio-2010,C#,.net 3.5,Visual Studio 2010,我有一个针对.NETV3.5的2010项目。令人费解的是,我无法再构建v3.5项目。该项目没有添加任何引用。它甚至不允许我添加对System.Core的引用,因为它是由“构建系统”添加的 警告CS1685:中定义了预定义类型“System.Func” 全局数据库中的多个程序集 别名使用来自的定义 'c:\Windows\Microsoft.NET\Framework\v4.0.30319\mscorlib.dll' IFilter.cs(82,49):错误CS0433:类型“System.Fun

我有一个针对.NETV3.5的2010项目。令人费解的是,我无法再构建v3.5项目。该项目没有添加任何引用。它甚至不允许我添加对System.Core的引用,因为它是由“构建系统”添加的

警告CS1685:中定义了预定义类型“System.Func” 全局数据库中的多个程序集 别名使用来自的定义 'c:\Windows\Microsoft.NET\Framework\v4.0.30319\mscorlib.dll'

IFilter.cs(82,49):错误CS0433:类型“System.Func” 存在于两个“c:\Program”文件中 (x86)\Reference Assemblies\Microsoft\Framework\v3.5\System.Core.dll' 和 'c:\Windows\Microsoft.NET\Framework\v4.0.30319\mscorlib.dll'

看起来4.0上有什么东西,但我不太确定如何修复它。还有人碰到过这个吗

同事也有同样的问题。需要重新安装Windows才能解决此问题

我在这个问题上打开了一个bug:

如果编译器设置为verbose,我会看到:

框架结构= C:\Windows\Microsoft.NET\Framework\v4.0.30319

具体如下:

指定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#不能。我尝试重新安装.NET3.5、4.0和VisualStudio2010,但没有成功。Visual Studio调试日志没有显示任何有趣的内容,并且安全模式不起作用

正在尝试避免Windows重新安装

编辑:我意识到其他人也面临着这个问题



多次重新安装。VisualStudio卸载后不会自行清理。在我有机会重新安装主操作系统之前,我已经启动了一个虚拟机进行开发。

这里有一个建议:

  • 清理解决方案并重试。如果没有成功,请继续执行步骤2
  • 通过右键单击项目并选择“Unload project”条目来卸载项目
  • 再次右键单击并选择“编辑项目”
  • 确保您的项目以正确的框架版本为目标,查找并设置以下标记的值:
  • v4.0
    
  • 检查项目的参考列表:
  • 
    ...
    
    确保没有重复引用

    我希望这有帮助


    如果没有,请备份项目文件,删除项目并将重新添加到新项目中。这很可能是可行的。

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


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

    问题是由此版本中的更改引起的。导致问题的原因是强制加载最新的CLR版本。小心

    小骗子: 打开VS210项目属性页ob生成高级检查不引用mscorlib.dll。 然后在文本编辑器中打开项目文件并添加到引用中:

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

    再见,在Microsoft Connect上,您可以通过在解决方案或项目文件中添加一行来解决此问题,将AspNetCompiler的工具路径设置为“C:\Windows\Microsoft.NET\Framework\v2.0.50727”。

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

    在我的例子中,有问题的VS项目包含许多虚拟目录(20)

    当这再次发生时,我删除了所有的虚拟目录,然后一次重新创建一个,并在每次寻找这个erorr时重建项目

    当我在没有编译的情况下背靠背地添加两个虚拟对象时,错误再次出现

    解决方案是删除最后一个VDir,然后重建,恢复VDir,然后重建。
    通过有条不紊地重复一个过程,你会发现一些奇怪的事情,这些过程可能会变成一个“时间鞋面”或“阳光时间”,这会占用你的一天,一个晚上,深夜,您可能会在当地的craft brewery酒厂喝到一杯好啤酒。

    谢谢您的提示,但该项目的目标是3.5,它应该是这样的,并且在项目文件中根本没有定义任何引用。听起来不太可能,但您是否在机器配置中查找了程序集重定向?只需找到machine.config即可(%运行时安装路径%\Config\Machine.Config)注意元素。当我再次考虑它时,它似乎不太符合逻辑。我认为程序集重定向是一种运行时机制,不应该影响编译器。但可能我错了。此外,您还可以使用Windows SDK工具中的Fusion Log Viewer查看程序集加载日志。这似乎与terest.谢谢你的想法。我也有同样的问题,即使我删除了我在1中设置的注册表项(在post you链接中),甚至尝试将它们设置为值0,我仍然无法在framework 3.5中构建。你是否在不重新安装的情况下修复了它?
    <ItemGroup>
        <Reference Include="System" />
        <Reference Include="System.Data" />
        <Reference Include="System.Xml" />
        <Reference Include="Microsoft.CSharp" />
        ...
    </ItemGroup>
    
    <Reference Include="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL" />