DOTNET_SYSTEM_NET_HTTP_SOCKETSHTTPHANDLER_HTTP2SUPPORTDOTNET_SYSTEM_NET_HTTP_SOCKETSHTTPHANDLER_HTTP3SUPPORTDOTNET_SYSTEM_NET_HTTP_SOCKETSHTTPHANDLER_HTTP2FLOWCONTROL_DISABLEDYNAMICWINDOWSIZINGDOTNET_SYSTEM_NET_HTTP_SOCKETSHTTPHANDLER_FLOWCONTROL_MAXSTREAMWINDOWSIZEDOTNET_SYSTEM_NET_HTTP_SOCKETSHTTPHANDLER_FLOWCONTROL_STREAMWINDOWSCALETHRESHOLDMULTIPLIERDOTNET_SYSTEM_GLOBALIZATION_*设置固定模式
应用程序可以通过以下任意形式启用固定模式:
在项目文件中:
true
在runtimeconfig.json文件中:
{
"runtimeOptions": {
"configProperties": {
"System.Globalization.Invariant": true
}
}
}
通过将环境变量值DOTNET_SYSTEM_GLOBALIZATION_INVARIANT设置为true或1。
重要
项目文件或runtimeconfig.json中设置的值的优先级低于环境变量。
有关详尽信息,请参阅.NET全球化固定模式。
DOTNET_SYSTEM_GLOBALIZATION_USENLS
这仅适用于Windows。若要在全球化中使用区域语言支持(NLS),请将DOTNET_SYSTEM_GLOBALIZATION_USENLS设置为true或1。若果不使用,则将DOTNET_SYSTEM_GLOBALIZATION_USENLS设置为false或0。
DOTNET_SYSTEM_NET_SOCKETS_*
本部份重点介绍两个System.Net.Sockets环境变量:
套接字的延续从风波线程调度到System.Threading.ThreadPool。这样可以防止该延续制止风波处理。若要容许延续直接在风波线程上运行,请将DOTNET_SYSTEM_NET_SOCKETS_INLINE_COMPLETIONS设置为1。此项默认禁用。
注意
假如存在高昂的工作,而这种工作在IO线程上逗留的时间超过了须要的时间,则此设置可能会造成性能减少。进行测试以确保此设置有助于提升性能。
使用TechEmpower基准可在特别高的负载下生成大量的大型套接字读取和写入,这样单个套接字引擎才能保持高繁忙状态linux查看当前环境变量,最多可达三十个x64和8个Arm64CPU内核。绝大多数真实世界场景永远不会形成这么巨大的负载(每秒数十万个恳求),因而一个生产程序大多数情况下就够用了。并且,若要确保可以处理极端负载,可以使用DOTNET_SYSTEM_NET_SOCKETS_THREAD_COUNT来重画估算的值。若果未重画,则使用以下值:
为每位引擎使用确定的核心数,即每位引擎的核心数最大值为1或。DOTNET_SYSTEM_NET_DISABLEIPV6
帮助确定是否禁用了Internet合同版本6(IPv6)。当设置为true或1时,IPv6被禁用,除非在System.AppContext中另有规定。
DOTNET_SYSTEM_NET_HTTP_USESOCKETSHTTPHANDLER
可以使用以下机制之一将某个进程配置为使用较旧的HttpClientHandler:
从代码中,使用AppContext类:
AppContext.SetSwitch("System.Net.Http.UseSocketsHttpHandler", false);
AppContext开关也可以由配置文件设置。有关配置开关的详尽信息,请参阅。
可以通过环境变量DOTNET_SYSTEM_NET_HTTP_USESOCKETSHTTPHANDLER达到同样的疗效。若要选择退出,请将该值设置为false或0。
注意
从.NET5开始,使用HttpClientHandler的此设置不再可用。
DOTNET_Jit*和DOTNET_GC*
对于JIT和JIT生成的GC信息,有两个与压力相关的功能:JIT压力和GC缺口压力。这种功能提供了一种在开发过程中发觉边沿案例和更多“真实世界”场景的技巧,且无需开发复杂的应用程序。有以下可用的环境变量:
JIT压力
可以通过多种方法启用JIT压力。将DOTNET_JitStress设置为一个非零整数值,按照该技巧的名称哈希生成不同级别的JIT优化。诸如,若要应用所有优化,则设置DOTNET_JitStress=2。启用JIT压力的另一种方式是设置DOTNET_JitStressModeNamesOnly=1,之后在DOTNET_JitStressModeNames变量中恳求压力模式,并以空格分隔。
作为示例,可考虑:
DOTNET_JitStressModeNames=STRESS_USE_CMOV STRESS_64RSLT_MUL STRESS_LCL_FLDS
GC缺口压力
启用GC缺口压力会使GC一直在特定位置发生,并有助于跟踪GC缺口。可以使用DOTNET_GCStress环境变量来启用GC缺口压力。
有关详尽信息,请参阅调查JIT压力和GC缺口压力。
JIT显存障碍
Arm64的代码生成器容许通过将DOTNET_JitNoMemoryBarriers设置为1来删掉所有MemoryBarriers指令。
DOTNET_RUNNING_IN_CONTAINER和DOTNET_RUNNING_IN_CONTAINERS
官方的.NET映像(Windows和Linux)设置了最常见的环境变量:
这种值用于确定ASP.NETCore工作负载何时在容器上下文中运行。
DOTNET_SYSTEM_CONSOLE_ALLOW_ANSI_COLOR_REDIRECTION
当为true时,可以通过将DOTNET_SYSTEM_CONSOLE_ALLOW_ANSI_COLOR_REDIRECTION设置为1或true来发出ANSI颜色代码。
DOTNET_SYSTEM_DIAGNOSTICS和相关变量DOTNET_DiagnosticPorts
配置确诊工具可以与.NET运行时通讯的备用终结点。有关详尽信息,请参阅确诊端口文档。
DOTNET_DefaultDiagnosticPortSuspend
将运行时配置为在启动期间暂停,并在设置为1时等待来自指定的确诊端口的DiagnosticsIPCResumeStartup命令。默认值为0。有关详尽信息,请参阅确诊端口文档。
DOTNET_EnableDiagnostics
当设置为0时,将禁用通过确诊端口实现的调试、分析和其他确诊,且难以由其他确诊设置覆盖。默认为1。
DOTNET_EnableDiagnostics_IPC
从.NET8开始,当设置为0时,将禁用确诊端口,且难以由其他确诊设置覆盖。默认为1。
DOTNET_EnableDiagnostics_Debugger
从.NET8开始,当设置为0时,将禁用调试功能,且难以由其他确诊设置覆盖。默认为1。
DOTNET_EnableDiagnostics_Profiler
从.NET8开始,当设置为0时,将禁用剖析功能,且难以由其他确诊设置覆盖。默认为1。
EventPipe变量
有关详尽信息,请参阅。
.NETSDK和CLI环境变量DOTNET_ROOT,DOTNET_ROOT(x86)
指定.NET运行时的位置(假如运行时未安装在默认位置)。Windows上的默认位置为C:ProgramFilesdotnet。macOS上的默认位置为/usr/local/share/dotnet。Linux上的默认位置因发行版和安装方式而异。Ubuntu22.04上的默认位置为/usr/share/dotnet(假如是从安装)或/usr/lib/dotnet(假如是从Jammy源安装)。有关详尽信息,请参阅以下资源:
此环境变量仅在通过生成的可执行文件(apphosts)运行应用时使用。在64位OS上运行32位可执行文件时,改用DOTNET_ROOT(x86)。
DOTNET_HOST_PATH
指定用于启动当前正在运行的dotnet进程的dotnet主机(Windows上的dotnet.exe、Linux和macOS上的dotnet)的绝对路径。.NETSDK使用此功能来帮助在.NETSDK命令期间运行的工具,确保它们为命令期间创建的任何子dotnet进程使用相同的dotnet运行时。SDK中通过dotnet主机调用二补码文件的工具和MSBuild任务应遵守此环境变量,以确保体验一致。
在SDK命令期间调用dotnet的工具应使用以下算法来查找它:
说明
DOTNET_HOST_PATH不是用于查找dotnet主机的常规解决方案。它仅供.NETSDK调用的工具使用。
DOTNET_LAUNCH_PROFILE
dotnetrun命令将此变量设置为选取的启动配置文件。
给定以下launchSettings.json文件:
{
"profiles": {
"First": {
"commandName": "Project",
},
"Second": {
"commandName": "Project",
}
}
}
以及以下Program.cs文件:
var value = Environment.GetEnvironmentVariable("DOTNET_LAUNCH_PROFILE");
Console.WriteLine($"DOTNET_LAUNCH_PROFILE={value}");
以下方案生成所示的输出:
NUGET_PACKAGES
全局包文件夹。倘若未设置,则默认为Unix上的~/.nuget/packages或Windows上的%userprofile%.nugetpackages。
DOTNET_SERVICING
指定加载运行时期间共享主机要使用的服务索引的位置。
DOTNET_NOLOGO
指定是否在首次运行时显示.NET欢迎消息和遥测消息。设置为true可将这种消息静音(接受true、1或yes值),或则,设置为false可容许显示那些消息(接受false、0或no值)。若果未设置,则默认值为false,表示在首次运行时将显示消息。此标志对遥测不起作用(请参阅DOTNET_CLI_TELEMETRY_OPTOUT中关于怎么选择不发送遥测数据的信息)。
DOTNET_CLI_PERF_LOG
指定是否记录有关当前CLI会话的性能详尽信息。当设置为1、true或yes时启用。此项已默认禁用。
DOTNET_GENERATE_ASPNET_CERTIFICATE
指定是否生ASP.NETCore证书。默认值为true,但可以通过将此环境变量设置为0、false或no来覆盖该值。
DOTNET_ADD_GLOBAL_TOOLS_TO_PATH
指定是否将全局工具添加到PATH环境变量。默认值为true。倘若不向路径添加全局工具,请设置为0、false或no。
DOTNET_CLI_TELEMETRY_OPTOUT
指定是否搜集并向Microsoft发送.NET工具使用情况的相关数据。设置为true以选择退出遥测功能(接受的值为true、1或yes)。否则,设置为false以选择加入遥测功能(接受的值为false、0或no)。倘若未设置,则默认为false且遥测功能为活动状态。
DOTNET_SKIP_FIRST_TIME_EXPERIENCE
假如DOTNET_SKIP_FIRST_TIME_EXPERIENCE设置为true,NuGetFallbackFolder将不会扩充到c盘,并将显示一条较短的欢迎消息和遥测通知。
注意
.NETCore3.0及更高版本不再支持此环境变量。请改用。
DOTNET_MULTILEVEL_LOOKUP
指定是否从全局位置解析.NET运行时、共享框架或SDK。倘若未设置,则默认为1(逻辑true)。将值设置为0(逻辑false),不从全局位置解析,而且具有独立的.NET安装。有关多级别查找的详尽信息,请参阅Multi-levelSharedFXLookup(多级别SharedFX查找)。
注意
此环境变量仅适用于面向.NET6和更早版本的应用程序。从.NET7开始linux查看当前环境变量,.NET仅在一个位置查找框架。有关详尽信息,请参阅禁用多级别查找。
DOTNET_ROLL_FORWARD
确定前滚行为。有关详尽信息,请参阅。
DOTNET_ROLL_FORWARD_TO_PRERELEASE
假如设置为1(已启用),则容许从发布版本前滚到预发行版本。默认情况下(0-禁用)linux之家,恳请.NET运行时的发行版本时,前滚将仅考虑已安装的发行版本。
有关详尽信息,请参阅
DOTNET_ROLL_FORWARD_ON_NO_CANDIDATE_FX
假如设置为0,则禁用次要版本前滚。此设置在.NETCore3.0中被DOTNET_ROLL_FORWARD代替。应改为使用新设置。
DOTNET_CLI_FORCE_UTF8_ENCODING
强制在控制台北使用UTF-8编码,虽然对于不完全支持UTF-8的较旧版本的Windows10也是这么。有关详尽信息,请参阅SDK在完成后不再修改控制台编码。
DOTNET_CLI_UI_LANGUAGE
使用区域设置值(如en-us)设置CLIUI的语言。支持的值与VisualStudio中的值相同。有关详尽信息,请参阅VisualStudio安装文档中有关修改安装程序语言一节。.NET资源管理器规则适用,因而你无需选定精确匹配项-也可在CultureInfo树中选定后代。诸如,假如将其设置为fr-CA,CLI将查找并使用fr翻译。假如你将其设置为不受支持的语言,CLI会退回到英文。
DOTNET_DISABLE_GUI_ERRORS
对于启用了GUI的已生成可执行文件-禁用对话框弹出窗口,此窗口一般显示个别类错误。在这种情况下,它仅写入到stderr并退出。
DOTNET_ADDITIONAL_DEPS
等效于CLI选项--additional-deps。
DOTNET_RUNTIME_ID
代替检查到的RID。
DOTNET_SHARED_STORE
程序集解析在个别情况下将回挪到的“共享储存”的位置。
DOTNET_STARTUP_HOOKS
要从中加载和执行启动挂钩的程序集列表。
DOTNET_BUNDLE_EXTRACT_BASE_DIR
指定在执行单文件应用程序之前将其提取到的目录。
有关详尽信息,请参阅。
DOTNET_CLI_CONTEXT_*DOTNET_CLI_WORKLOAD_UPDATE_NOTIFY_DISABLE
禁用工作负载的播发清单后台下载。默认值为false-未禁用。假如设置为true,则禁用下载。有关详尽信息,请参阅。
DOTNET_CLI_WORKLOAD_UPDATE_NOTIFY_INTERVAL_HOURS
指定工作负载的播发清单后台下载之间间隔的最短小时数。默认值为24,也就是每晚不超过一次。有关详尽信息,请参阅。
DOTNET_TOOLS_ALLOW_MANIFEST_IN_ROOT
指定.NETSDK本地工具是否搜索Windows上根文件夹中的工具清单文件。默认值为false。
COREHOST_TRACE
控制来自托管组件(比如dotnet.exe、hostfxr和hostpolicy)的确诊跟踪。
获取有关应用程序启动的详尽跟踪信息的典型方式是设置COREHOST_TRACE=1和COREHOST_TRACEFILE=host_trace.txt,之后运行该应用程序。将在当前目录中创建一个新文件host_trace.txt,其中包含详尽信息。
SuppressNETCoreSdkPreviewMessage
假如设置为truelinux查看端口占用,则调用dotnet将不会在使用预览版SDK时发出警告。
在.NETCLI中配置MSBuild
要在进程外执行MSBuild,请将DOTNET_CLI_RUN_MSBUILD_OUTOFPROC环境变量设置为1、true或yes。默认情况下,MSBuild将在进程内执行。要强制MSBuild使用外部工作节点常年进程来建立项目,请将DOTNET_CLI_USE_MSBUILDNOINPROCNODE设置为1、true或yes。这将把MSBUILDNOINPROCNODE环境变量设置为1,且名为MSBuildServerV1,由于入口进程将大部份工作转发给了它。
DOTNET_MSBUILD_SDK_RESOLVER_*
这种重画用于强制解析的SDK任务和目标来自给定的基目录,并向MSBuild报告给定的版本,假如未知,则该版本可能为null。这方面的一个关键用例是测试SDK任务和目标,而不使用.NETCoreSDK布署它们。
DOTNET_NEW_PREFERRED_LANG
配置在省略-lang|--language开关时dotnetnew命令的默认编程语言。默认值为C#。有效值为C#、F#或VB。有关详尽信息,请查看dotnetnew。
dotnetwatch环境变量
有关可用作环境变量的dotnetwatch设置的信息,请参阅。
另请参阅