2011-03-31 146 views
36

我们目前正在将我们的所有解决方案从2005年迁移到2010年(没错,我们正在跳过2008!)。我们也在改变我们的文件结构以使其更有意义(一些常见的项目将嵌套在特定的项目中等)。Visual Studio 2010:无法解析目标框架的mscorlib'.NETFramework,Version = v4.0'

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

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

我碰到下面的确切消息:

无法解析目标 框架 ” .NETFramework,版本= 4.0' 版的mscorlib。如果目标框架不是 ,或者框架名字对象 格式不正确,则可能发生 。

现在,这是烦人的,但它变得更糟。我的同事在从颠覆中获得同样的解决方案时,实际上可以看到并更改引用和事物。事实上,目前这个项目实际上是建立在他的机器上。他承诺进行更改,但我无法构建此特定项目或查看参考资料。

这使我得出了一个简单的结论,在我的客户端上有一些事情会导致麻烦!网上的建议,我已经看到如下:安装

  • 多.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。

+0

只是为了确保:重建所有,重新启动VS,重新启动Windows。它有时可以解决最奇怪的错误。 – 2011-03-31 11:07:59

+0

不幸的是,我到目前为止尝试了几次,但没有成功,我很害怕。 – 2011-03-31 12:00:31

+0

这就是我在做什么时,当我的想法...对不起,它没有帮助 – 2011-03-31 12:01:56

回答

24

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

显然这是我的同事不知何故的参考,但我没有,因为这个参考,一切都死了。我们发现这一点,因为如果您在特定项目(这是一个VB.NET项目)中选中“显示所有文件”,您会看到甜蜜的References文件夹,通常不会出现在VB.Net项目中。在Tab失败的情况下,该文件夹向我们展示了一个带有警告的参考。显然这是编译器或VS2010无法告诉我的东西,但确实是为我们搞砸了。

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

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

+0

在我的情况中,我更新了一个引用的DLL,但是项目引用并没有显示警告。删除并重新添加引用 – Aaroninus 2015-06-10 14:29:14

+0

我的同事有这个错误,显然这是由于VS2015安装期间发生的错误。我的办公室,巧合与否,我不得不在ms office的参考文献丢失了。纠正该问题并修复参考后,问题就解决了。 – 2016-08-22 11:00:43

+0

谢谢人,它的工作。 – 2017-07-14 06:27:54

0

检查在项目属性的目标框架设置正确 - 默认情况下,这是“ NET Framework 4.0客户端” - 这可能是你需要”框架4.0"

看到this thread看起来像同样的问题

,你可能还需要审查this article它涉及利用反射

58

它可能是路径到您的解决方案是太长调试的问题具有相同的症状:

含义:

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

应该是在 “256字”。

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

我发现这个线程,当我有同样的问题,但没有参考的问题。我找到了上面的链接,它解决了我的问题。希望这可以帮助到此处遇到同样问题的其他人。

+5

感谢您为我节省了大量时间。刚刚遇到了这个问题,这就是解决方案。 – RationalGeek 2012-02-06 19:22:59

+3

哇。这是2013年,这对我来说是正确的解决方案。 – 2013-02-26 13:00:41

+2

...我爱你男人 – Sam 2013-08-29 20:24:19

1

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

原因:我是进口一些.Targets文件,它定义了一个名为AppConfigFile属性,它可能过写了同名的一些内部属性:

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

修复:重命名属性的一些其它的名字,问题就消失了。

+0

这个答案帮助我的朋友解决他的问题。我投了票。谢谢! :) – 2015-04-10 17:19:05

3

我在我的项目上工作保存了工作,并关闭了visual studio 2010.当再次打开工作时,我得到了这个错误,我只是关闭visual studio再次复制了我的项目被保存的文件,我粘贴它somwhere其他(在文件在我的桌面上),我再次打开与VS2010的项目,它工作。

2

我有同样的问题,并尝试以上大部分,包括重新安装.net 4.0和重新启动仍然没有消失。

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

问题马上发生。

0

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

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的不喜欢<assembly>元素,这是奇怪的考虑到Visual Studio中添加的事实后两种<data>元素他们在那里。我的问题得到解决后,我的<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" /> 
0

发生了什么事我是,我在我的项目的所有引用丢失了,所以我不得不再次插入。

13

我今天早上收到这个错误警告。我刚刚重建项目,然后关闭Visual Studio,重新打开它,错误消失。

+1

我所要做的只是关闭Visual Studio并重新打开 – 2014-02-07 15:05:10

+2

相信它或不只是做一个重建做到了。我浪费了两个小时寻找并尝试其他解决方案,包括重新安装。啊微软! – Chiwda 2014-02-19 10:59:42

0

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

0

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

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

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

删除这些.datasource文件消除了这个问题。

0

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

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

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中恢复文件。

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'))" /> 

希望它可以帮助别人......

1

我有同样的问题,在我的项目(网络)服务的参考。 “更新服务参考”和“配置服务参考”都不再有效。

那么我们只需将(web)服务引用丢弃并重新创建即可。不行!相同的错误消息。

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

说明:

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

问题解决了(当然是在我的情况)。

我对可能发生什么的猜测:我在我的web服务的某处更改了一个类。界面没有改变,Visual Studio也没有看到改变。 (缓存?)配置不再匹配,配置/重建/删除(网络)服务失败。

0

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

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

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

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

它导致他们是一些自定义的库引用造成了这个问题。 我希望这可以帮助某人。 干杯!

开发人员。

相关问题