C# Visual Studio 2010无法再生成.NET v3.5
我有一个针对.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重新安装 编辑:我意识到其他人也面临着这个问题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
多次重新安装。VisualStudio卸载后不会自行清理。在我有机会重新安装主操作系统之前,我已经启动了一个虚拟机进行开发。这里有一个建议:
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" />