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

Dom*_*que 5 .net-framework-version visual-studio-2017

我最近升级了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,找不到版本= 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”的定向包。该项目将不会更改。
  • 不要加载项目。

我选择第二个选项,然后获得以下网站:用于Visual Studio的.NET SDK

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

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
Run Code Online (Sandbox Code Playgroud)

=> 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
Run Code Online (Sandbox Code Playgroud)

=>好的,似乎没有针对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)”。如果尝试找到此文件,则会找到对.NET框架的引用gacutilsn -k ...以及在我的PC上找不到的其他程序。

如果我使用Google查找“ Microsoft .Net Framework 4.5 Targeting Pack”(确切的短语),则结果为零。

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

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

Dom*_*que 5

同时,我已经解决了这个问题,并且可以归结为使用计算机的普遍真理:

当您遇到问题时,不要听您的计算机告诉您什么,而要问自己在问题出现时您在做什么。

就我而言,这意味着:
当我升级Visual Studio版本(使用Visual Studio Installer)时,该问题弹出,因此该解决方案包括再次启动该Visual Studio Installer,然后检查要安装的其他功能(我现在已经检查了很多,以至于我不知道哪一个完全解决了我的问题。

该对话框前面的错误消息只是有关PC内部的信息,只会导致无法理解的偏误。

  • 我需要从 Visual Studio 安装程序安装缺少的框架。谢谢。 (2认同)