c# - <FrameworkReference Include ="Microsoft.AspNetCore.App"/> 在.net core 3+ 中实际上是做什么的?

标签 c# asp.net-core asp.net-core-3.1

最近,我读到了 Use the ASP.NET Core shared framework我想知道:

  • 它是如何在引擎盖下工作的?
  • 添加 <FrameworkReference Include="Microsoft.AspNetCore.App" /> 时,我是否应该考虑任何缺点或注意事项? ?

  • 例如,我创建了一个简单的控制台应用程序并使用 self-hosted 发布了它。选项。输出大小比 <FrameworkReference Include="Microsoft.AspNetCore.App" / 大 20mb即使我没有明确使用任何 Microsoft.AspNetCore包裹

    最佳答案

    共享框架是包含在运行时中的程序集集合,因此不需要通过 NuGet 单独解析。不过,您可以将其视为 NuGet 包,因为处理方式非常相似。当然,主要区别在于它不需要从 NuGet 下载,因为它可以通过运行时在本地使用。
    由于它与运行时一起分发,这也意味着您不能引用它的特定版本。相反,您始终会获得包含在可用运行时版本中的版本。这样做的好处是内容将在运行时更新时自动更新,因此依赖于共享框架之一的应用程序也将在运行时前滚。

  • 试图详细回答这个问题超出了 Stack Overflow 答案的范围,因为这是一些深层的 MSBuild 逻辑。如果您有兴趣了解,可以查看 dotnet/sdk repo尽管其中包含了使 Microsoft.NET.Sdk 的所有内容项目 SDK 及其子类型工作,包括 FrameworkReference执行。
  • 首先,您应该知道没有办法使用例如ASP.NET Core 而不使用该框架引用。所以你的选择并不多。大多数情况下,您不会自己添加框架引用; ASP.NET Core 应用程序使用 Microsoft.NET.Sdk.Web默认情况下已包含框架引用的项目 SDK。如果要在非 Web 项目中(例如在 ASP.NET Core 的类库中)添加 ASP.NET Core 引用,则只需自己添加框架引用。
    除此之外,你需要记住的事情并不多。请记住不要使用某个版本并保持您的 SDK 和运行时更新,以确保您拥有所有最新的安全补丁。
  • 关于c# - <FrameworkReference Include ="Microsoft.AspNetCore.App"/> 在.net core 3+ 中实际上是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64478618/

    相关文章:

    c# - Windows 模拟 : A Flaw in the Ointment

    c# - 使用 MySqlDataReader 计算特定记录数

    c# - 数学计算来检索两点之间的角度?

    c# - Blazor:管理环境特定变量

    c# - 是否可以从第 3 方应用程序执行对 Azure App Insight 的查询

    c# - 追加到 .NET Core 3.1 中 Azure blob 文件的末尾,而不下载整个文件

    c# - Asp.Net Core 3.1 中 MvcHtmlString.Create() 方法的等效项是什么?

    c# - C# 的 Simple-ITK 安装教程

    c# - 如何使用 Entity Framework Core 进行全文搜索?

    azure - 无法在Windows操作系统下的Azure中创建新的.NET Core 3.1 Web应用程序