Visual Studio无法针对.NET Framework 4.8进行目标设置。

64

我在创建一个以.NET Framework 4.8为目标的项目时遇到了一些问题。我正在使用升级至16.2.5版本的Visual Studio 2019。我还安装了.NET Framework 4.8开发人员包。从Visual Studio安装程序中,我没有看到任何启用4.8开发工具(类似于4.7)的选项。

11个回答

68

我最近在使用Visual Studio 2019社区版时遇到了一个类似的问题:只显示了.Net Core版本。

我手动编辑了.csproj文件。我更改了带有TargetFramework属性的那一行:

<TargetFramework>net48</TargetFramework>

奇怪的是,现在所有其他版本也都显示出来了。


6
这似乎是一个bug。我按照所有其他建议操作(使用VS 16.7.2社区版、4.8开发包和目标包,并重新启动),但这个方法解决了问题。 - John Fulton KB8ABO
1
并非所有项目的 .csproj 文件都包含 <TargetFramework>。我的其中一个项目只有 <TargetFrameworkVersion> - RhinoDevel
1
还有呢?我现在只有 .Net Framework,没有 .Net Core 版本。所有这些问题都是微软的肮脏伎俩,强迫开发者使用 .Net Core。:( - Rekshino
1
VS 专业版 2019 16.9.1,并且这个解决方案可行。 - Hassan Raafat
1
仍然适用于VS 2022。 - Donald
显示剩余10条评论

41

以上的解决方案都没有解决我的问题,但是Oak_3260548的建议给了我正确的方向。

在Visual Studio安装程序中,可以通过点击顶部菜单中的“工具/获取工具和功能”来访问,我选择了“单独的组件”选项卡,并勾选了.Net Framework 4.8 Targeting pack。 这个解决了我的问题。enter image description here


4
我尝试过了,但对我仍然无效。 - thang
非常感谢。这对我和其他3个同事都有帮助! - Datboydozy
通过我的Visual Studio 2022,我能够选择.NET Framework 4.8作为项目的目标,但不能选择4.8.1;但是一旦我阅读了这个,并选择了工具/获取工具和功能,然后将右侧窗格滚动到底部并选择“.NET Framework 4.8.1开发工具”并更新安装,4.8.1就会出现在项目属性的“目标框架”下拉菜单中。 - undefined

40

我想把我的问题发布出来,因为我在VS2019 Winforms项目中也遇到了这个问题,除了 .Net 5 和 Core 3.1 之外,无法针对任何其他 .net framework。原来有两种Winforms,即Winforms应用程序和Winforms应用程序(.Net Framework)。前者无法针对其他 .net框架进行目标定位,而后者可以。唉!这些简单的东西并不明显。


1
感谢@Kenneth提供的提示。这个区别适用于许多模板类型。文本描述通常提到“.NET Standard或.NET Core”(例如Core 3.1 ... .NET 5.0),显然不包括“.NET Framework”(4 ... 4.8)。 - Sarge1060
是的!这也是我在VS2022中使用库项目(dll)时遇到问题的解决方案。我选择了顶部项库(.net或.net标准),现在我重新创建并向下滚动列表找到库(.net框架),所有内容都在那里。 - FrankKrumnow

30

这个Visual Studio主题包含了我所寻找的所有答案。.NET Framework 4.8开发人员包包括SDK和定位包。安装并重新启动Visual Studio后,我现在可以在Visual Studio项目的定位选项中看到.NET Framework 4.8。您不需要执行任何Visual Studio安装程序步骤。

如上面的主题所提到的,从16.3开始(目前列在16.3预览2下),.NET Framework 4.8将被包含在Visual Studio安装过程中。


我退出/重新打开了VS,但没有看到它。这个Visual Studio线程中的链接无法使用。 - Michele
@Michele,链接对我仍然有效,你确定吗? - ElliotSchmelliot
4
抱歉,但在安装后并重新启动 Visual Studio 后,我 无法 看到 .NET Framework 4.8。 - Paul
1
我使用VS2019 (v16.11.8)进行安装,但我仍然无法看到它。不起作用。 我只能访问Core和5。 - Justin Emlay
1
请确保您已安装了开发人员包 https://dotnet.microsoft.com/en-us/download/dotnet-framework/thank-you/net48-developer-pack-offline-installer - captainst
显示剩余2条评论

15

如果在VS 2019社区版中遇到此问题,这里有一个解决方法。在我的情况下,问题出在选择模板时的混淆。 .NET Framework的模板在括号中且位于列表底部(在我的情况下根本不显示,直到我点击搜索框旁边的“清除”链接)。

例如:

Console App (.NET Framework) ASP.NET Web Application (.NET Framework) Class Library (.NET Framework) 等等


1
我怀疑一些人遇到的问题就是这个,我本来期望选择类库项目并选择.NET Framework 4.8作为目标框架。我没有预料到会有一整套新的项目类型。 - stusherwin
1
这对我解决了问题。现在我有更多的项目选择。微软做了一些愚蠢的事情! - Hugo A.
这是唯一帮助了我的答案。我不知道为什么没有比这更清晰的区分。即使在项目创建闪屏界面中将平台下拉菜单过滤为“Windows”,也无法将.NET Framework项目置于顶部。这真的很误导人,因为即使非框架的WPF项目也具有标签“C#”、“Windows”和“桌面”,并且在搜索结果中排名较高——好像其他项目都具有跨平台功能,尽管事实并非如此。谢谢你的答案! - Reece

6

我通过VS中的目标框架安装了4.8框架,但在项目属性下无法像我预期的那样进行选择。

最后我不得不重新创建我的VS项目。在使用框架c#控制台搜索参数创建项目时,在模板中找到了4.8框架。然后我将文件复制到新的项目文件夹中,并通过解决方案工具将它们添加为现有项。


0

C:\Program Files\Microsoft Visual Studio\2022\Community\Msbuild\Current\Bin\amd64\Microsoft.Common.CurrentVersion.targets

C:\程序文件\Microsoft Visual Studio\2022\Community\Msbuild\Current\Bin\amd64\Microsoft.Common.CurrentVersion.targets

<!--
<GetReferenceAssemblyPaths
    Condition="'$(TargetFrameworkMoniker)' != '' and ('$(_TargetFrameworkDirectories)' == '' or '$(_FullFrameworkReferenceAssemblyPaths)' == '')"
    TargetFrameworkMoniker="$(TargetFrameworkMoniker)"
    RootPath="$(TargetFrameworkRootPath)"
    TargetFrameworkFallbackSearchPaths="$(TargetFrameworkFallbackSearchPaths)"
    BypassFrameworkInstallChecks="$(BypassFrameworkInstallChecks)"
    >
  <Output TaskParameter="ReferenceAssemblyPaths" PropertyName="_TargetFrameworkDirectories"/>
  <Output TaskParameter="FullFrameworkReferenceAssemblyPaths" PropertyName="_FullFrameworkReferenceAssemblyPaths"/>
  <Output TaskParameter="TargetFrameworkMonikerDisplayName" PropertyName="TargetFrameworkMonikerDisplayName" Condition="'$(TargetFrameworkMonikerDisplayName)' == ''"/>
</GetReferenceAssemblyPaths>
-->

在更新的16.9版本中,这是唯一有效的方法。它确实禁用了新的.net5/.net core,但我通常需要针对4.8进行目标设置。 - Beached

0

即使使用较低版本的Visual Studio(我的是Win 2008 R2下的15.2版本),您也可以做到!

  1. 安装Net Framework 4.8运行时和开发人员包
  2. 重新启动服务器
  3. 打开现有项目,在项目属性中将框架切换到4.8

就这样!


0

你所说的“Fromework”应该是“Framework”,而“XMAL”应该是“XAML”。对于不了解的人来说可能会有些困惑,因为并没有“XMAL”。 - Lemiarty

0
我找到了一个解决方案:如果我想让Visual Studio Community 2019针对.NET 4.8,我可以使用Visual Studio Express 2013创建一些简单的项目。在项目设置中,我更改所需的.NET版本(最高可达4.8)并保存。之后,您可以使用Visual Studio Community 2019打开该项目,并在项目设置中看到所有的.NET目标选项,最高可达4.8。
但是,如果您想尝试.NET Core 3.1和.NET 5.0,则必须从Visual Studio Community 2019内创建新项目。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接