Visual Studio 2010无法再构建.NET v3.5

我有一个针对.NET v3.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 Files(x86)\ Reference Assemblies \ Microsoft \ Framework \ v3.5 \ System.Core.dll’和’C:\ WINDOWS \ Microsoft.NET \框架\ v4.0.30319 \ mscorlib.dll中’

看起来有些东西正在抓住4.0但我不太确定如何修复它。 还有其他人碰到这个吗?

同事有同样的问题。 重新安装Windows以解决问题

我在这个问题上打开了一个错误: https : //connect.microsoft.com/VisualStudio/feedback/details/558245/warning-cs1685-when-compiling-a-v3-5-net-application-in-visual-工作室2010

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

FrameworkPathOverride = 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#不能。 我尝试重新安装.NET 3.5,4.0和Visual Studio 2010但没有成功。 Visual Studio调试日志没有显示任何有趣的安全模式不起作用。

试图避免重新安装Windows …

编辑:我已经意识到其他人也面临着这个问题。 链接 , 链接 , 链接


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

问题是这篇文章所做的更改造成的。 强制加载最新的CLR版本是导致问题的原因。 小心!

小作弊:打开VS210项目属性页面ob build advanced check不要引用mscorlib.dll。 然后在文本编辑器中打开项目文件并添加到引用中:

 

再见

这里有一个建议:

  1. 清洁您的解决方案并重试。 如果没有成功继续第2步。
  2. 通过右键单击项目并选择条目“卸载项目”来卸载项目
  3. 再次右键单击并选择“编辑项目”
  4. 确保您的项目针对查找正确的框架版本并设置以下标记的值:
 v4.0 
  1. 检查项目的参考列表:
      ...  

确保没有双重参考。

我希望这有帮助。

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

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

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

根据Microsoft Connect上的这篇文章 ,您可以通过在解决方案或项目文件中添加一行来解决此问题,将AspNetCompiler的ToolPath设置为“C:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727”。

我已多次看到这个问题 – 解决方法可能非常简单。

在我看来,违规VS项目包含许多虚拟目录(20)。

一旦再次发生这种情况,我会删除所有Virtuals Dirs,然后一次重新创建一个,并在每次寻找此erorr时重建项目。

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

解决方案是删除最后一个VDir,然后重建,恢复Vdirs然后重建。 通过有条不紊地重复一个可以成为“时间戳”或“sunktime”的过程找到的那些令人毛骨悚然的古怪事物,这些过程需要你的白天,晚上,深夜,并可能在当地的精酿啤酒厂获得一杯好啤酒。