文档非常简短。只需添加:
<PropertyGroup>
<TieredPGO>true</TieredPGO>
</PropertyGroup>
在您的 .csproj 文件中,将启用配置文件引导优化,或添加环境变量
DOTNET_TieredPGO
并将其设置为 1
。
我假设这是一个进程范围的设置(特别是因为它可以通过环境变量设置),所以我们不需要将这些行添加到库和 DLL 中,只需添加到主应用程序(带有
Main(string[] args)
的应用程序)
入口点)。还是我错了?
如果它包含在 DLL 中但不包含在主应用程序中会发生什么?
当托管在父进程(例如 IIS 中的 AspNetCoreModule)中时,它也适用吗?
如果不复制配置文件,设置会在构建部署链中丢失吗?
它是嵌入到二进制文件中的标志吗(如 CoreFlags)?
(另请参阅我的其他问题关于优化代码持久性的范围)
PGO 是进程范围的设置,因此如果在环境中指定,则从该环境启动的所有进程都将使用它;如果在项目文件或运行时配置中指定,则仅当该模块是主要可执行文件时才适用。
对于 ASP.NET,可能发生的情况取决于您是否在进程外启动进程中的东西,尽管我不太熟悉那里的细节。
注意,在 .NET 8 中此功能默认启用,因此无需配置它(除非您想禁用)。