如何在新创建的 .NET Core 2.0 Web 应用程序中以 .NET Standard 2.0 为目标?

How do I target .NET Standard 2.0 in a freshly created .NET Core 2.0 web app?

我刚刚使用 dotnet new web 创建了一个新项目。我的 Google-foo 可能让我失望了,但我没有找到与我的答案相关的任何内容(如果我错过了一些明显的东西,请 link 到另一个 SO 答案或相关文档)。

如果我想确保这个新项目符合 .NET Standard 2.0 标准,我现在该怎么做?

NET Standard 适用于 class 库。应用程序必须以 netcoreapp* 为目标,其中 * 是版本号。下面显示了兼容性矩阵:https://docs.microsoft.com/en-us/dotnet/standard/net-standard

例如,.NET Core 2 可以使用 .NET Standard 版本 2 及更低版本。

It is not inherently possible to run a netstandard project as an executable. Since netstandard was designed to be used for libraries.

为了完全在 netstandard2.0 中开发您的 Web 应用程序,您必须创建一个单独的项目,以 .NET Core 或 .NET Framework 为目标来执行您的库,其中包含您的Web 应用程序(使用 .NET Standard 开发).

1. Executable Project (ex: console app)
   -- Target Framework: netcoreapp2.0 / net462

2. Web Application Project (library)
   -- Target Framework: netstandard2.0

您可以使用以下步骤更改项目的目标框架。

步骤 1. 定位所需的框架

  1. 右键单击您的项目并 select Edit *****.csproj

  2. .csproj文件中,需要将目标框架替换为.NET Framework。

示例 .csproj 文件:

<Project Sdk="Microsoft.NET.Sdk.Web"> //<-- note the .Web for the web template
  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
  </PropertyGroup>
</Project>

有关 目标框架名字对象 (TFM) 的列表(即 net47netstandard2.0netcoreapp2.0 等* ) 你可以检查这个 link : https://docs.microsoft.com/en-us/dotnet/standard/frameworks

步骤 2.运行dotnet restore

转到输出 window 和 运行 dotnet restore.

注意:有时 Visual Studio 可能会出现异常(取决于您安装的更新),因此您可能需要关闭并重新打开 Visual Studio。否则,有时 clean/re-build 可能会起作用。


针对两个框架

您可以选择一个或另一个,甚至可以针对 两个 框架。

<TargetFrameworks>netcoreapp2.0; net47</TargetFrameworks> //<-- note the plural form!