Visual Studio 2010:无法解析目标框架“.NETFramework,Version=v4.0”的 mscorlib
Posted
技术标签:
【中文标题】Visual Studio 2010:无法解析目标框架“.NETFramework,Version=v4.0”的 mscorlib【英文标题】:Visual Studio 2010: Could not resolve mscorlib for target framework '.NETFramework,Version=v4.0' 【发布时间】:2011-07-26 19:09:50 【问题描述】:我们目前正在将我们所有的解决方案从 2005 年迁移到 2010 年(没错,我们正在跳过 2008 年!)。我们还在更改我们的文件结构以使其更有意义(一些常见项目将嵌套在特定项目中等)。
这一切都意味着需要更改引用!除此之外,我们还将它们全部设置为 .NET 4.0。为了实现这一点,我们制作了一个临时的“GOD”解决方案,所有 117 个项目都在同一个解决方案中。
我正在和一位同事一起做这件事,直到大约 2 小时前,一切都按计划进行。然而,我们在 117 个项目中的一个项目中遇到了问题。此项目拒绝在项目属性中“显示”它的引用、资源、服务和设置选项卡。
我收到以下确切消息:
无法解析目标的 mscorlib 框架 '.NETFramework,版本 = v4.0'。这个可以 如果目标框架不是,就会发生 已安装或者如果框架名字对象 格式不正确。
现在这很烦人,但它变得更糟。我的同事,当从颠覆中获得相同的解决方案时,实际上可以看到并更改引用和事物。事实上,目前该项目实际上是在他的机器上构建的。他提交了更改,但我无法构建此特定项目,也无法查看参考资料。
这使我得出一个简单的结论,我的客户必须有所不同,这会造成麻烦!我在网上看到的建议如下:
安装了多个 .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。
【问题讨论】:
只是为了确保:全部重建,重新启动 VS,重新启动 Windows。它有时可以解决最奇怪的错误。 很遗憾,到目前为止我已经尝试了几次,但恐怕没有成功。 当我没有想法时,我就是这样做的......对不起,它没有帮助 这通常是我做的第一件事,因为我确实可以解决很多奇怪的问题。到目前为止,这个有点顽强:( 刚刚修复了 VS2010(包括 .NET 4.0....),没有任何改变...什么都没有 :( 【参考方案1】:可能是您的解决方案路径太长:
意思:
C:\MyProject\Folder\SubFolder...
应该在“256个字符”之下。
http://wcfvs.blogspot.com/2011/04/could-not-resolve-mscorlib-for-target.html
当我遇到同样的问题但没有参考问题时,我发现了这个线程。我找到了上面的链接,它解决了我的问题。希望这能帮助遇到同样问题的其他人。
【讨论】:
感谢您为我节省了大量时间。刚刚遇到这个问题,这就是解决方案。 哇。现在是 2013 年,这对我来说是正确的解决方案。 谢谢,这仍然是我的解决方案。 现在是 2015 年,我正在使用 VS2015。这也是我的确切问题。为什么他们不能告诉我这条路太长了? 现在是 2020 年,这仍然是 VS 2019 的问题。我讨厌计算机。【参考方案2】:今天早上我收到了这个错误。我刚刚做了以下事情:
-
重建项目
关闭 Visual Studio
重新打开 Visual Studio
错误消失了。
【讨论】:
我所要做的就是关闭 Visual Studio 并重新打开 信不信由你,只是重建就做到了。我浪费了两个小时寻找和尝试其他解决方案,包括重新安装。啊微软! 我开始了一个全新的项目,它给了我这个错误,我认为我实际上不必重建它,因为它是新的。确实我做到了!在开始连接服务之前,请务必构建您的全新项目。只有使用 M$,您才需要在编码之前构建项目。【参考方案3】:Microsoft Visual Basic for Applications Extensibility 5.3 (VBIDE) 是魔鬼的名字!!!
显然,这是我的同事以某种方式获得的参考资料,但我没有,因为这个参考资料,一切都死了。我们发现这一点是因为如果您在特定项目(这是一个 VB.NET 项目)上选中“显示所有文件”,您会得到一个很好的 References 文件夹,它似乎对于 VB.Net 项目通常不存在。在选项卡失败的地方,该文件夹向我们显示了一个带有警告的参考。显然这是编译器或 VS2010 无法告诉我的事情,但正是让我们搞砸的原因。
因此,如果您在处理项目时遇到此错误,请“显示所有文件”,以便您查看 References 文件夹,并找出可能导致您的问题的参考!
我很高兴它在三个多小时后找到了这个! >.
【讨论】:
在我的例子中,我更新了其中一个引用的 DLL,但项目引用确实 not 显示警告。通过删除和重新添加引用来修复。 我的同事遇到了这个错误。显然这是由于 VS2015 安装过程中发生的错误。有一个关于 ms office 问题的警告,不管巧合与否,我对 ms office 的引用丢失了。更正该问题并修复参考后,问题就解决了。 要清楚...您需要删除错误的引用。【参考方案4】:我的项目中的(Web)服务引用遇到了同样的问题。 “更新服务参考”和“配置服务参考”都不再起作用了。
好吧,让我们把(网络)服务引用扔掉,然后重新创建它。不去!同样的错误信息。
解决方案:编辑项目文件并删除与服务引用有关的所有内容。
说明:
转到解决方案资源管理器并右键单击项目名称并 选择“卸载项目”。 转到解决方案资源管理器并右键单击 在项目名称上并选择“编辑 YourProjectName.proj” 删除与您的(Web)服务引用有关的每个元素。 (通常它包含文本“服务引用”) 转到解决方案资源管理器并右键单击项目名称并 选择“重新加载项目”。 现在再次添加您的(Web)服务引用。问题解决了(就我而言)。
我对可能发生的事情的猜测:我在 Web 服务的某个地方更改了一个类。界面未更改,Visual Studio 不知何故看不到更改。 (缓存?)配置不再匹配,配置/重建/删除(Web)服务失败。
【讨论】:
【参考方案5】:我在我的项目上工作保存了工作并关闭了 Visual Studio 2010。当再次打开工作时我收到此错误我刚刚关闭 Visual Studio 再次复制了保存我的项目的文件并将其粘贴到其他地方(在文件中在我的桌面上),然后我再次使用 VS2010 打开了该项目,它正在工作。
【讨论】:
【参考方案6】:我遇到了同样的问题,在尝试了上述大部分方法后,包括重新安装 .Net 4.0 和重新启动仍然没有消失。
最终通过将我的项目树向下移动来解决它。 IE。更靠近驱动器的根目录。结果发现目录和文件名太长,我相信引用被截断,因此无法解析。
问题马上就来了。
【讨论】:
【参考方案7】:我今天遇到了这个问题,解决方法是手动手动编辑 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>
元素之后的两个 <data>
元素,考虑到 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" />
【讨论】:
【参考方案8】:在资源编辑器中发生在我身上。
原因:我正在导入一些 .Targets 文件,该文件定义了一个名为 AppConfigFile 的属性,它可能覆盖了一些同名的内部属性:
<PropertyGroup>
<AppConfigFile>...</AppConfigFile>
</PropertyGroup>
修复:将属性重命名为其他名称,问题就消失了。
【讨论】:
这个答案帮助我的朋友解决了他的问题。我投了赞成票。谢谢! :)【参考方案9】:从 .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 中恢复文件。
【讨论】:
【参考方案10】:检查项目属性中的目标框架是否设置正确 - 默认情况下这是“.Net Framework 4.0 Client” - 可能是您需要“.Net Framework 4.0”
请参阅this thread,这看起来是同一个问题
您可能还想查看this article,它与使用反射器调试具有相同症状的问题有关
【讨论】:
【参考方案11】:当源目录为只读时,我遇到了同样的问题。如果我将我的工作区与我们的版本控制服务器 (Perforce) 同步,它将使所有目录默认为只读,除非我选择签出目录以进行编辑。有时我很懒,不会这样做,因为我是唯一一个在任何时候都在从事这些项目的人。但是这个错误消失了,清除只读标志。
【讨论】:
【参考方案12】:发生在我身上的是我在项目中的所有引用都丢失了,所以我不得不重新插入它们。
【讨论】:
【参考方案13】:对我来说,只需设置 Target Framework 4.0 即可解决我的问题。有时目标框架在某种程度上是明确的。这可能会导致问题。
【讨论】:
【参考方案14】:我今天遇到这个问题,证明是项目文件名过长造成的。
这又是由某些服务引用引起的。 导入或更新服务引用时,Visual Studio 会生成 .datasource 文件,其中文件名是完全限定名称。这意味着在某些情况下名称很长。
通过谷歌搜索,我发现删除这些文件是安全的。 检查this 或this。
删除这些 .datasource 文件可以解决问题。
【讨论】:
【参考方案15】:我正在将一个 vb.net 项目迁移到 VS 2015。我也遇到了同样的问题。问题不在于 .Net 框架,因为我能够创建一个针对特定框架版本的新项目并且它成功了。
在我的例子中,该项目引用了 FPSpreadADO 和其他一些类似的库。一旦我删除了这些引用,它就可以正常工作了。
【讨论】:
【参考方案16】:我在 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'))" />
希望对某人有所帮助...
【讨论】:
【参考方案17】:我也遇到了这个错误。 (“无法解析目标框架 '.NetFramework 4.5.1' 的 mscorlib。如果未安装目标框架或框架名字对象的格式不正确,则可能发生这种情况。”)。
当我在 VB 2013 项目中将框架从 3.5 更改为 4.5.1 时,发生了这种情况。 解决方案是删除 .vbproj 文件中的所有引用:所有标记为 Reference 和 COMReference 组的引用。
当然,在这样做之后,项目中出现了所有其他类型的错误。
然后我开始将它们一一复制到同一个地方,从备份中复制,以确定它们之间哪些是有问题的(我按顺序复制了与我得到的新错误相关的那些)修复它们),每次刷新项目,直到受影响的窗口正确可视化。
结果它们是一些定制的库引用,导致了这个问题。 我希望这可以帮助某人。 干杯!
开发者。
【讨论】:
【参考方案18】:我今天在 Visual Studio 2017 的一个项目中遇到了这个问题,我最初显然是作为通用 Windows 平台应用程序开始的,但最终选择了 Windows 窗体桌面应用程序。
不知何故,由于分支错误或源代码管理中的提交问题,一些过时/丢弃的 UWP XAML 文件以及“project.json”文件重新回到我的项目文件夹中。 VS 将不再构建或启动我的 Windows 窗体应用程序,并出现上述其他人报告的类似错误(例如,“Could not resolve mscorlib for target framework '.NETFramework,Version=v4.7'”)。
从项目文件夹中删除所有过时的 UWP 垃圾(包括“project.json”、所有 XAML 文件和任何其他相关的废话)并重新加载解决方案后,错误消失了,项目同时构建和成功启动。
希望这会有所帮助。
【讨论】:
【参考方案19】:在大多数情况下,这是因为缺少参考。 在解决方案资源管理器 --> 参考 --> 您可以看到缺少的参考(黄色) 只需添加参考就可以了。
【讨论】:
【参考方案20】:今天遇到了这个。
已删除 bin 和 obj 文件夹。
重新打开 Visual Studio,它突然工作了。
【讨论】:
【参考方案21】:我的解决方案是从 NuGet 包管理器下载并安装 Microsoft.NETCore.UniversalWindowsPlatform
【讨论】:
【参考方案22】:在 Visual Studio 2019 Preview (v. 16) 中遇到了这个问题。
通过将项目的目标框架从 .NET Framework v.4.7.2
更改为 4.6
,然后再改回 4.7.2
解决了这个问题。
【讨论】:
以上是关于Visual Studio 2010:无法解析目标框架“.NETFramework,Version=v4.0”的 mscorlib的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio 2010 IDE 64 位版本没有目标体系结构错误
为啥 Visual Studio 无法解析我的 CSS 类名称?
Visual studio 2015编译项目报错 未能解析目标框架“.NETFramework,Version=v4.0”的 mscorlib