Visual Studio 2010:无法解析目标框架“.NETFramework,Version = v4.0”的mscorlib

时间:2011-03-31 10:47:20

标签: c# .net visual-studio mscorlib

我们目前正在从2005年到2010年迁移所有解决方案(这是正确的,我们正在跳过2008年!)。我们也在改变我们的文件结构以使其更有意义(一些常见项目将嵌套在特定项目中等)。

这一切都意味着参考需要改变!除此之外,我们还将它们全部设置为.NET 4.0。为了实现这一目标,我们在同一解决方案中制定了一个临时“GOD”解决方案,包含所有117个项目。

我和一位同事一起这样做,直到大约2小时前,一切都按照计划进行。然而,我们遇到了117个项目之一的问题。该项目拒绝在项目属性中“显示”它的引用,资源,服务和设置选项卡。

我收到以下确切消息:

  

无法解析目标的mscorlib   骨架   ” .NETFramework,版本= 4.0' 版。这个可以   如果目标框架不是,则会发生   安装或如果框架名字   格式不正确。

现在这很烦人,但情况会变得更糟。我的同事,当从subversion获得相同的解决方案时,CAN实际上可以看到并更改引用和事物。事实上,目前该项目实际上是在他的机器上建造的。他提交了更改,但我无法构建此特定项目,或查看引用。

这导致我得出一个简单的结论,我的客户端必须有所不同,这会造成麻烦!我在网上看到的建议如下:

  • 安装了多个.NET4.0版本(我的客户端不是这种情况)
  • 未安装.NET v3.5; v4.0正在尝试构建v3.5(我的客户端安装了3.5)
  • 注册密钥:OnlyUseLatestCLR已设置并且正在搞砸了! (扫描我的注册表,这个密钥不在任何地方!)

请参阅:http://connect.microsoft.com/VisualStudio/feedback/details/542789/

我还没有尝试过我唯一能做的就是修复.NET 4.0我怎么会高度怀疑这是问题,因为我们有大约100个其他项目,我可以编辑和构建就好了。 C#和VB.NET都是。

21 个答案:

答案 0 :(得分:67)

可能是解决方案的路径太长了:

  

含义:

     

C:\ MyProject的\文件夹\子文件夹...

     

应低于“256字符”。

http://wcfvs.blogspot.com/2011/04/could-not-resolve-mscorlib-for-target.html

当我遇到同样的问题但没有参考问题时,我找到了这个帖子。我找到了上面的链接,它解决了我的问题。希望这可以帮助那些来到这里遇到同样问题的人。

答案 1 :(得分:24)

Microsoft Visual Basic for Applications Extensibility 5.3(VBIDE)是魔鬼的名字!!!

显然这是我的同事以某种方式提供的参考,但我没有,因为这个参考,一切都死了。我们发现这是因为如果你检查特定项目(这是一个VB.NET项目)上的“显示所有文件”,你会得到一个很好的References文件夹,它通常不适用于VB.Net项目。如果Tab失败了我们,该文件夹向我们展示了一个带警告的引用。显然这是编译器或VS2010无法告诉我的内容,但正是为我们搞砸了。

因此,如果您在处理项目时遇到此错误,请“显示所有文件”,以便您查看References文件夹,并找出可能导致您出现问题的引用!

我很高兴它发现了这个,但是超过3个小时! >。<

答案 2 :(得分:18)

今天早上我收到了这个错误。我刚做了以下几件事:

  1. 重建项目
  2. 关闭Visual Studio
  3. 重新打开Visual Studio
  4. 并且错误消失了。

答案 3 :(得分:3)

我在我的项目上工作保存了工作并关闭了Visual Studio 2010.当再次打开工作时我得到了这个错误我关闭了视觉工作室再次复制我保存项目的文件并将其粘贴到其他地方(在文件中)在我的桌面上)我用VS2010重新打开了项目,它正在运行。

答案 4 :(得分:3)

我的项目中的(web)服务引用存在同样的问题。两者" 更新服务参考"和" 配置服务参考"不再工作了。

好吧,让我们抛弃(web)服务参考并再次创建它。不行!相同的错误消息。

解决方案:编辑项目文件并删除与服务引用有关的所有内容。

说明:

  • 转到解决方案资源管理器,右键单击项目名称和 选择"卸载项目"。
  • 转到解决方案资源管理器并右键单击 在项目名称上,选择"编辑YourProjectName.proj"
  • 删除与您的(网络)服务引用有关的所有元素。 (通常它包含文本"服务引用")
  • 转到解决方案资源管理器,右键单击项目名称和 选择"重新加载项目"。
  • 现在再次添加您的(网络)服务引用。

问题解决了(嗯,这是我的情况)。

我对可能发生的事情的猜测:我在我的网络服务中的某处更改了一个类。接口未更改,Visual Studio以某种方式看不到更改。 (缓存?)配置不再匹配,配置/重建/删除(Web)服务失败。

答案 5 :(得分:2)

我有同样的问题,在尝试了上述大部分内容后,包括重新安装.Net 4.0并重新启动仍然没有消失。

最终通过将项目树向下移动来解决它。即。更接近驱动器的根。原来目录和文件名太长,我相信引用被截断,因此无法解决。

问题立刻就出现了。

答案 6 :(得分:2)

我今天遇到了这个问题,解决方案是手动手动编辑 Resources.resx 文件。

我的 Resources.resx 文件如下所示:

  <data name="SomeString" xml:space="preserve">
    <value>I am a string</value>
  </data>
  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
  <data name="MyLogo" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\Resources\MyLogo.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
  </data>
  <data name="Open" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\Resources\Open.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
  </data>

原来,Visual Studio不喜欢<data>元素之后的两个<assembly>元素,考虑到Visual Studio在其中添加了它们,这很奇怪。我在<assembly>元素之前移动它后解决了我的问题:

  <data name="SomeString" xml:space="preserve">
    <value>I am a string</value>
  </data>
  <data name="MyLogo" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\Resources\MyLogo.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
  </data>
  <data name="Open" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\Resources\Open.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
  </data>
  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />

答案 7 :(得分:1)

在资源编辑器中发生了我。

原因:我正在导入一些.Targets文件,它定义了一个名为AppConfigFile的属性,它可能覆盖了一些同名的内部属性:

<PropertyGroup>
  <AppConfigFile>...</AppConfigFile>
</PropertyGroup>

修复:将属性重命名为其他名称,问题就消失了。

答案 8 :(得分:1)

从.NET 4.5迁移到.NET 4.6.2时,我在Visual Studio 2013中遇到此问题。问题项目是一个网站项目。

Visual Studio会自动运行一些生成Reference.svcmap的工具。 Reference.cs以:

开头
//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:4.0.30319.42000
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

选择新的.NET版本会导致Visual Studio清除生成的文件,而不是填充内容。我尝试了上述所有解决方案,但都没有奏效。最后我选择了.NET 4.5.1,然后是.NET 4.6.2,该工具确实运行了。文件中的差异只是注释中工具的版本号,所以我可以从GIT中恢复文件。

答案 9 :(得分:0)

对我来说,只是设置Target Framework 4.0解决了我的问题。有时目标框架以某种方式清晰。这可能会导致问题。

答案 10 :(得分:0)

我的解决方案是从NuGet软件包管理器中下载并安装Microsoft.NETCore.UniversalWindowsPlatform

答案 11 :(得分:0)

今天就参加这个。

已删除bin和obj文件夹。

重新打开Visual Studio,它突然工作了。

答案 12 :(得分:0)

在大多数情况下,它是由于缺少参考而发生的。
在解决方案资源管理器->参考->中,您可以看到缺少的参考(黄色) 只需添加参考即可。

答案 13 :(得分:0)

我今天在Visual Studio 2017中遇到了一个问题,该项目显然是我最初作为通用Windows平台应用程序开始的,但最终决定使用Windows Forms桌面应用程序。

无论如何,由于分支错误或源代码控制中的提交问题,一些过时/废弃的UWP XAML文件,以及“ project.json”文件都重新缠绕在我的项目文件夹中。 VS不会再生成或启动Windows Forms应用程序,并且出现与上述其他人所报告的类似的错误(例如,“无法为目标框架'.NETFramework,Version = v4.7'解析mscorlib”)。

从项目文件夹中删除所有过时的UWP垃圾文件(包括“ project.json”,所有XAML文件以及任何其他相关的废话)并重新加载解决方案后,错误消失了,并且项目已构建并发射成功。

希望这会有所帮助。

答案 14 :(得分:0)

我也遇到了这个错误。 (“无法为目标框架解析mscorlib'.NetFramework 4.5.1'。如果未安装目标框架或框架名字对象格式不正确,可能会发生这种情况。”)。

当我在VB 2013项目中将框架从3.5更改为4.5.1时,就发生了这种情况。 解决方案是删除.vbproj文件上的所有引用:标记为Reference和COMReference groups的所有引用。

当然,在这之后,项目中出现了所有其他错误。

然后我开始将它们一个接一个地复制到同一个地方,从备份中复制以识别它们之间哪些是有问题的(我复制了与我得到的新错误相关的那些)修复它们,每次刷新项目,直到受影响的窗口正确显示。

结果他们是一些自定义的库引用,它们产生了这个问题。 我希望这可以帮助别人。 干杯!

开发者。

答案 15 :(得分:0)

我在XamarinForms PCL项目中遇到了类似的错误 我发现错误是关于项目的参考。我将xamarin.forms更新到最后一个版本,由于某些原因,NuGet无法从项目文件(xml)中删除以前版本的所有引用。
所以,我只是从项目文件中删除了以下行并且它有效!

<Error Condition="!Exists('..\..\packages\Xamarin.Forms.2.3.1.114\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Xamarin.Forms.2.3.1.114\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.targets'))" />

希望它有所帮助...

答案 16 :(得分:0)

我正在将vb.net项目迁移到VS 2015.我也遇到了同样的问题。问题不在于.Net框架,因为我能够创建一个针对特定框架版本的新项目,并且它成功了。

就我而言,该项目引用了FPSpreadADO和其他一些类似的库。删除这些引用后,它工作正常。

答案 17 :(得分:0)

我今天遇到了这个问题,事实证明这是由于项目中文件名太长造成的。

反过来,这是由一些服务引用引起的。 导入或更新服务引用时,visual studio会生成.datasource文件,其中文件名是完全限定名称。在某些情况下,这意味着很长的名字。

通过谷歌搜索,我发现删除这些文件是安全的提示。 检查thisthis

删除这些.datasource文件可以解决问题。

答案 18 :(得分:0)

我发生的事情是,我对项目的所有引用都丢失了,所以我不得不再次插入它们。

答案 19 :(得分:0)

当源目录只读时,我遇到了同样的问题。如果我将我的工作区与我们的版本控制服务器(Perforce)同步,它将使所有目录默认只读,除非我选择我正在检查目录进行编辑。有时我很懒,不这样做,因为我是唯一一个在任何时间点从事这些项目的人。但是这个错误消失了清除只读标志。

答案 20 :(得分:0)

检查项目属性中的目标框架是否设置正确 - 默认情况下为“.Net Framework 4.0 Client” - 可能需要“.Net Framework 4.0”

请参阅this thread,看起来像是同一个问题

您可能还想查看与使用反射器调试具有相同症状的问题相关的this article