<;FrameworkReference Include=";Microsoft.AspNetCore.App&/>;在.Net Core 3+中实际上是做什么的? [英] What <FrameworkReference Include="Microsoft.AspNetCore.App" /> is actually do in .net core 3+?
问题描述
最近,我读到了关于Use the ASP.NET Core shared framework的报道,我想知道:
- 它在幕后是如何工作的?
- 添加
<FrameworkReference Include="Microsoft.AspNetCore.App" />
时有什么缺点或注意事项吗?
例如,我创建了一个简单的控制台应用程序,并使用self-hosted
选项发布它。即使我没有显式使用任何Microsoft.AspNetCore
包,<FrameworkReference Include="Microsoft.AspNetCore.App" /
的输出大小也比<FrameworkReference Include="Microsoft.AspNetCore.App" /
大20MB
推荐答案
共享框架是运行库中包含的程序集集合,因此不需要通过NuGet单独解析。不过,您可以将其视为一个NuGet包,因为其处理方式非常相似。当然,主要区别在于它不需要从NuGet下载,因为它可以在运行时本地使用。
因为它是随运行时一起分发的,这也意味着您不能引用它的特定版本。相反,您始终会获得运行库的可用版本中包含的版本。这样做的好处是,内容将在运行时更新时自动更新,因此依赖于某个共享框架的应用程序也将在运行时前滚。
试图详细回答这个问题超出了堆栈溢出答案的范围,因为这是一些深层的MSBuild逻辑。如果您有兴趣了解,可以查看dotnet/sdk repo,其中包含使
Microsoft.NET.Sdk
项目SDK及其子类型工作的所有内容,包括FrameworkReference
实现。首先,您应该知道,如果不使用该框架引用,就无法使用例如ASP.NET Core。所以你没有太多的选择。但在大多数情况下,您不会自己添加框架引用;ASP.NET核心应用程序使用
Microsoft.NET.Sdk.Web
项目SDK,该项目SDK在默认情况下已经包含框架引用。如果要在非Web项目中(例如,在ASP.NET Core的类库中)添加ASP.NET Core引用,则只需自己添加框架引用。除此之外,您还需要记住的事情不多。只需记住不要使用某个版本,并保持您的SDK和运行时更新,以确保您拥有所有最新的安全补丁。
这篇关于<;FrameworkReference Include=";Microsoft.AspNetCore.App&/>;在.Net Core 3+中实际上是做什么的?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!