错误MSB3644:找不到框架“.NETFramework,Version = v4.5”的引用程序集

时间:2018-03-20 11:39:47

标签: visual-studio-2017 .net-framework-version

我最近升级了我的Visual Studio环境,现在我的.Net框架似乎有问题,正如您在以下错误消息中看到的那样:

  

9基C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Professional \ MSBuild \ 15.0 \ Bin \ Microsoft.Common.CurrentVersion.targets(1126,5):错误MSB3644:框架的参考程序集“.NETFramework,Version = v4.5“未被发现。要解决此问题,请为此框架版本安装SDK或Targeting Pack,或者将应用程序重新定位到已安装SDK或Targeting Pack的框架版本。请注意,程序集将从全局程序集缓存(GAC)中解析,并将用于代替引用程序集。因此,您的程序集可能无法正确定位到您想要的框架。

(数字“9”只是我Visual Studio解决方案中第九个项目的计数器)

让我向您解释一下这种情况如此令人困惑:

当我加载解决方案时,我收到以下错误消息:

  

C#项目...的目标是“.NETFramework,Version = 4.5”,这台机器上没有安装。要继续,请选择以下选项:

  • 将目标更改为.NET Framework 4.6.1。您可以稍后再更改回“.NETFramework,Version = 4.5”。
  • 下载“.NETFramework,Version = 4.5”的定位包。该项目不会改变。
  • 不要加载项目。

我选择了第二个选项,我得到了以下网站:.NET SDKs for Visual Studio

这给出了以下内容:.NET框架列表:

4.7.1   Developer Pack, included in Visual Studio 2017   Runtime   Release Details
4.7     Developer Pack, included in Visual Studio 2017   Runtime   Release Details
4.6.2   Developer Pack, included in Visual Studio 2017   Runtime   Release Details
4.6.1   Developer Pack, included in Visual Studio 2017   Runtime   Release Details
4.6     Developer Pack, included in Visual Studio 2017   Runtime   Release Details
4.5.2   Developer Pack, included in Visual Studio 2017   Runtime   Release Details
3.5 SP1 Developer Pack, included in Visual Studio 2017   Runtime   Release Details

=> 4.5在哪里?
我已经有不同的时间下载了4.5.2版本,Developer Pack以及Runtime,但没有任何变化。

所以,过了一会儿,我只关闭了关于丢失目标的对话框。一旦我开始编译项目,我期望获得更可读的错误消息。

接下来,我还调查了我的PC的安装(PC设置,添加和删除程序),这给出了以下列表:

Microsoft .NET Core SDK - 2.1.4 (x64)
Microsoft .NET Framework 4.5 SDK
Microsoft .NET Framework 4.5.1 Multi-Targeting Pack (ENU)
Microsoft .NET Framework 4.5.1 SDK
Microsoft .NET Framework 4.5.2 Multi-Targeting Pack (ENU)
Microsoft .NET Framework 4.6 Targeting Pack
Microsoft .NET Framework 4.6.2 SDK
Microsoft .NET Framework 4.6.2 Targeting Pack
Microsoft .NET Framework 4.7 SDK
Microsoft .NET Framework 4.7 Targeting Pack

=>好的,似乎没有4.5的目标包(只有SDK似乎存在),但该怎么办呢?

错误消息说明了重定向我的应用程序,但这是不可能的:我是唯一有这个问题的人,修改中央应用程序的配置不是解决方案。

错误消息还提到了所谓的“全局程序集缓存”,它将用于代替引用程序集。那么,让我们来看看这些事情:

我的PC上似乎有两个参考组件:

  

C:\ Program Files \ Reference Assemblies \ Microsoft \ Framework(似乎只包含“v3.0”和“v3.5”目录)
  C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework。

后者似乎包含一个“.NETFramework”目录,该目录又包含一个“v4.5”子目录,其中包含相当多的XML文件。

但错误消息表明未使用这些消息,而是使用“全局程序集缓存(GAC)”。如果我尝试找到这个,我会找到gacutilsn -k ...以及我的PC上找不到的特定.Net框架的其他程序的引用。

如果我使用Google查看“Microsoft .Net Framework 4.5 Targeting Pack”(精确短语),我会得到零结果。

因此,换句话说,我收到一条关于PC上缺少软件的消息。我有机会安装它,但安装什么也没做。然后我得到一个关于此的编译错误,其中讨论了一种非常通用的技术,这种技术似乎不存在于谷歌之后,这是互联网上最常用的搜索引擎。它提到了一种技术(GAC),可能会在C:\Program FilesC:\Program Files (x86)上使用或不使用,而且相应的工具(gacutil)似乎只存在于我的PC上对于其他版本。

有人可以在这方面向我推进正确的方向吗? 提前致谢

2 个答案:

答案 0 :(得分:5)

与此同时,我已经解决了这个问题,这归结为使用计算机的一般事实:

  

当您遇到问题时,请不要听您的电脑告诉您的内容,而是在问题出现时问问自己您在做什么。

就我而言,它意味着以下内容:
当我升级Visual Studio版本(使用Visual Studio安装程序)时,问题突然出现,因此解决方案包括再次启动Visual Studio安装程序,并检查要安装的更多功能(我现在检查了很多这些功能)我无法弄清楚哪一个确切地解决了我的问题。)

在对话框之前的错误消息只是关于PC内部的信息,这些信息只会导致不可理解的偏离轨迹。

答案 1 :(得分:0)

我检查并似乎可以使用的框是ASP.NET框架,Office / Sharepoint开发,使用C ++的Linux开发以及Visual Studio扩展开发,所有这些工作量都在工作量之下。在单个程序包下,我检查了每个.NET Framework SDK和定位包。

那最终奏效了。