SDK 样式项目是新 .Net Framework 项目的推荐方法吗?

amg*_*vem 13 c# csproj visual-studio-2019

我正在开发一个 .Net Framework 4.8 解决方案,其中包含 20 个左右的项目(其中包括 WPF)。我们正在讨论现在是否应该将我们的项目转换为 SDK 风格以获得新的和改进的项目格式。

新的 SDK 风格是新 .Net Framework 项目的推荐方法吗?或者它主要用作转换为 Core 的一个步骤?我找不到 Microsoft 的任何内容说明您应该执行此操作,并且 Visual Studio 中的新项目仍使用旧格式创建。有什么好的理由不转换为 SDK 风格吗?

nds*_*svw 7

另一个答案还不错,但它没有回答微软是否真的建议在.Net Framework项目中使用SDK格式(“新项目格式”)的问题

那么,让我来回答这个问题...

微软在https://learn.microsoft.com/en-us/dotnet/core/porting/#considerations-when-porting上写道:

即使您还无法移植您的应用程序,也请考虑升级到最新的项目文件格式。.NET Framework 项目使用过时的项目格式。尽管最新的项目格式(称为 SDK 样式项目)是为 .NET Core 及更高版本创建的,但它们可以与 .NET Framework 一起使用。拥有最新格式的项目文件可以为您将来移植应用程序奠定良好的基础。

并且:

即使您不从 .NET Framework 迁移到 .NET,您仍然应该将项目文件升级到最新格式


小智 6

对于开始一个新项目,您可以使用新的SDK样式(通用项目系统)。它适用于大多数项目类型,但不适用于所有项目类型。

从这里我们可以知道.NET Framework的默认项目格式是Non-SDK-style,.NET Core和.NET Standard是SDK-style。

我想如果没有必要,.NET Framework可能暂时不会使用SDK风格。用于创建 sdk 风格的 .net 框架项目。我们需要手动设置它。

例如,您可以创建一个类库(.NET 标准)项目并修改 csproj 文件。

初始文件:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
  </PropertyGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)

您可以将其编辑为:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
     <TargetFramework>net48</TargetFramework>
  </PropertyGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)

然后,你就可以获得一个sdk风格的.net框架项目。

在此输入图像描述

SDK-style是一种项目格式,可能与.NET Framework到.NET Core的转换无关。

如果需要,您可以将旧的 .NET Framework 项目迁移到 .NET Core 项目。对于移植项目,您可以参考移植时的注意事项Windows桌面技术

  • 我们可以在同一个解决方案中同时拥有经典 csproj 和 sdk 样式 csproj 文件吗? (3认同)
  • @scuba88 是的,您可以在解决方案中混合项目样式,我们已经更改了几乎所有项目,除了 ASP.NET 站点,这可以正常工作。 (2认同)