Visual Studio 无法以 .NET Framework 4.8 为目标
Visual Studio Can't Target .NET Framework 4.8
我在创建面向 .NET Framework 4.8 的项目时遇到了一些问题。我使用的是 Visual Studio 2019,升级到 16.2.5 版本。我还安装了 .NET Framework 4.8 Developer Pack. From the Visual Studio Installer, I don't see any option for enabling 4.8 development tools .
此 Visual Studio thread had all the answers I was looking for. The .NET Framework 4.8 Developer Pack 包括 SDK 和 Targeting Pack。安装并重新启动 Visual Studio 后,我现在可以看到 .NET Framework 4.8 作为 Visual Studio 项目的目标选项。您不需要执行任何 Visual Studio 安装程序步骤。
在上述线程中还提到,从 16.3 (currently listed under 16.3 Preview 2) 开始,.NET Framework 4.8 将包含在 Visual Studio 安装过程中。
Visual Studio 2019 Community Edition 刚刚遇到类似问题:仅显示 .Net Core 版本。
我手动编辑了 .csproj
文件。我将 TargetFramework
属性 的行更改为
<TargetFramework>net48</TargetFramework>
奇怪的是,现在所有其他版本也出现了。
只是想我会 post 我的问题,因为我在 VS2019 Winforms 项目中也偶然发现了这个问题,并且除了 .Net 5 和 Core 3.1 之外无法针对任何目标。原来有 2 种类型的 Winforms,Winforms App 和 Winforms App (.Net Framework)。前者将无法针对其他 .net 框架。后者能够。呸!不明显的简单内容。
我在target frameworks下通过VS安装了framework 4.8。正如我所期望的那样,它在项目属性下是不可选择的。
我不得不重新创建我的 VS 项目。对于模板,我通过使用框架 c# 控制台搜索参数在项目创建中搜索模板找到了框架 4.8。然后我将我的文件复制到新的项目文件夹,并通过解决方案工具将它们添加为现有项目。
我找到了解决方案:如果我希望 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 中创建一个新项目。
对于在 VS 2019 社区版中遇到此问题的任何人。在我的案例中,问题是混淆了 select 的模板。 .NET Framework 的模板在括号中,在列表的下方(在我单击搜索框旁边的“清除”link 之前根本不显示)。
示例:
控制台应用程序(.NET 框架)
ASP.NET Web 应用程序(.NET 框架)
Class 库(.NET 框架)
等等
以上解决方案均未解决我的问题。 https://docs.microsoft.com/en-us/visualstudio/ide/step-1-create-a-windows-forms-application-project?view=vs-2019 第 2 点注释中的注释有帮助:
Note
If you don't see the Windows Forms App (.NET Framework) template, you
can install it from the Create a new project window. In the Not
finding what you're looking for? message, choose the Install more
tools and features link.
The 'Install more tools and features' link from the 'Not finding what
you're looking for' message in the 'Create new project' window
Next, in the Visual Studio Installer, choose the .NET desktop
development workload.
After that, choose the Modify button in the Visual Studio Installer.
You might be prompted to save your work; if so, do so. Next, choose
Continue to install the workload.
虽然我在安装 VS 时总是检查它丢失了。即使我安装了正确的 trageting 包,模板也不见了。
None 上面的解决方案解决了我的问题,但 Oak_3260548 的解决方案为我指明了正确的方向。
在 Visual Studio 安装程序中,可以通过单击顶部菜单中的“工具/获取工具和功能”来访问,我选择了“Individual Component”选项卡并选中“.Net Framework 4.8 Targeting pack”。这对我来说已经解决了。
C:\Program Files\Microsoft Visual Studio22\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>
-->
我在创建面向 .NET Framework 4.8 的项目时遇到了一些问题。我使用的是 Visual Studio 2019,升级到 16.2.5 版本。我还安装了 .NET Framework 4.8 Developer Pack. From the Visual Studio Installer, I don't see any option for enabling 4.8 development tools
此 Visual Studio thread had all the answers I was looking for. The .NET Framework 4.8 Developer Pack 包括 SDK 和 Targeting Pack。安装并重新启动 Visual Studio 后,我现在可以看到 .NET Framework 4.8 作为 Visual Studio 项目的目标选项。您不需要执行任何 Visual Studio 安装程序步骤。
在上述线程中还提到,从 16.3 (currently listed under 16.3 Preview 2) 开始,.NET Framework 4.8 将包含在 Visual Studio 安装过程中。
Visual Studio 2019 Community Edition 刚刚遇到类似问题:仅显示 .Net Core 版本。
我手动编辑了 .csproj
文件。我将 TargetFramework
属性 的行更改为
<TargetFramework>net48</TargetFramework>
奇怪的是,现在所有其他版本也出现了。
只是想我会 post 我的问题,因为我在 VS2019 Winforms 项目中也偶然发现了这个问题,并且除了 .Net 5 和 Core 3.1 之外无法针对任何目标。原来有 2 种类型的 Winforms,Winforms App 和 Winforms App (.Net Framework)。前者将无法针对其他 .net 框架。后者能够。呸!不明显的简单内容。
我在target frameworks下通过VS安装了framework 4.8。正如我所期望的那样,它在项目属性下是不可选择的。
我不得不重新创建我的 VS 项目。对于模板,我通过使用框架 c# 控制台搜索参数在项目创建中搜索模板找到了框架 4.8。然后我将我的文件复制到新的项目文件夹,并通过解决方案工具将它们添加为现有项目。
我找到了解决方案:如果我希望 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 中创建一个新项目。
对于在 VS 2019 社区版中遇到此问题的任何人。在我的案例中,问题是混淆了 select 的模板。 .NET Framework 的模板在括号中,在列表的下方(在我单击搜索框旁边的“清除”link 之前根本不显示)。
示例:
控制台应用程序(.NET 框架) ASP.NET Web 应用程序(.NET 框架) Class 库(.NET 框架) 等等
以上解决方案均未解决我的问题。 https://docs.microsoft.com/en-us/visualstudio/ide/step-1-create-a-windows-forms-application-project?view=vs-2019 第 2 点注释中的注释有帮助:
Note
If you don't see the Windows Forms App (.NET Framework) template, you can install it from the Create a new project window. In the Not finding what you're looking for? message, choose the Install more tools and features link.
The 'Install more tools and features' link from the 'Not finding what you're looking for' message in the 'Create new project' window
Next, in the Visual Studio Installer, choose the .NET desktop development workload.
After that, choose the Modify button in the Visual Studio Installer. You might be prompted to save your work; if so, do so. Next, choose Continue to install the workload.
虽然我在安装 VS 时总是检查它丢失了。即使我安装了正确的 trageting 包,模板也不见了。
None 上面的解决方案解决了我的问题,但 Oak_3260548 的解决方案为我指明了正确的方向。
在 Visual Studio 安装程序中,可以通过单击顶部菜单中的“工具/获取工具和功能”来访问,我选择了“Individual Component”选项卡并选中“.Net Framework 4.8 Targeting pack”。这对我来说已经解决了。
C:\Program Files\Microsoft Visual Studio22\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>
-->