前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >.NET 环境变量

.NET 环境变量

作者头像
呆呆
发布2022-01-05 09:36:54
2.3K0
发布2022-01-05 09:36:54
举报
文章被收录于专栏:centosDai

在本文中,您将了解 .NET SDK、.NET CLI 和 .NET 运行时使用的环境变量。某些环境变量由 .NET 运行时使用,而其他环境变量仅由 .NET SDK 和 .NET CLI 使用。一些环境变量被所有人使用。 .NET 运行时环境变量 DOTNET_SYSTEM_NET_HTTP_* 有几个全局 HTTP 环境变量设置: DOTNET_SYSTEM_NET_HTTP_ENABLEACTIVITYPROPAGATION 指示是否为全局 HTTP 设置启用诊断处理程序的活动传播。 DOTNET_SYSTEM_NET_HTTP_SOCKETSHTTPHANDLER_HTTP2SUPPORT 设置为falseor 时0,禁用 HTTP/2 支持,默认情况下启用。 DOTNET_SYSTEM_NET_HTTP_SOCKETSHTTPHANDLER_HTTP3SUPPORT 设置为true或 时1,启用 HTTP/3 支持,默认情况下禁用。 DOTNET_SYSTEM_NET_HTTP_SOCKETSHTTPHANDLER_HTTP2FLOWCONTROL_DISABLEDYNAMICWINDOWSIZING 当设置为falseor 时0,覆盖默认值并禁用 HTTP/2 动态窗口缩放算法。 DOTNET_SYSTEM_NET_HTTP_SOCKETSHTTPHANDLER_FLOWCONTROL_MAXSTREAMWINDOWSIZE 默认为 16 MB。覆盖时,HTTP/2 流接收窗口的最大大小不能小于 65,535。 DOTNET_SYSTEM_NET_HTTP_SOCKETSHTTPHANDLER_FLOWCONTROL_STREAMWINDOWSCALETHRESHOLDMULTIPLIER 默认为 1.0。当被覆盖时,更高的值会导致更短的窗口但下载速度更慢。不能小于0。 DOTNET_SYSTEM_GLOBALIZATION_* DOTNET_SYSTEM_GLOBALIZATION_INVARIANT:请参阅设置不变模式。 DOTNET_SYSTEM_GLOBALIZATION_PREDEFINED_CULTURES_ONLY: 指定是否只加载预定义的文化。 DOTNET_SYSTEM_GLOBALIZATION_APPLOCALICU:指示是否使用应用程序本地Unicode 国际组件(ICU)。有关更多信息,请参阅App-local ICU。 设置不变模式 应用程序可以通过以下任何一种方式启用不变模式: 在项目文件中: XML 复制 <PropertyGroup> <InvariantGlobalization>true</InvariantGlobalization> </PropertyGroup> 在runtimeconfig.json文件中: 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环境变量: DOTNET_SYSTEM_NET_SOCKETS_INLINE_COMPLETIONS DOTNET_SYSTEM_NET_SOCKETS_THREAD_COUNT 套接字延续从事件线程分派到System.Threading.ThreadPool。这避免了阻塞事件处理的延续。要允许继续直接在事件线程上运行,请设置DOTNET_SYSTEM_NET_SOCKETS_INLINE_COMPLETIONS为1. 默认情况下它是禁用的。 笔记 如果有昂贵的工作最终会占用 IO 线程的时间超过所需时间,则此设置会使性能变差。测试以确保此设置有助于提高性能。 使用 TechEmpower 基准测试,在非常高的负载下生成大量小型套接字读取和写入,单个套接字引擎能够保持最多 30 个 x64 和 8 个 ARM64 CPU 内核的繁忙。绝大多数现实生活场景永远不会产生如此巨大的负载(每秒数十万个请求),拥有一个生产者几乎总是足够的。但是,为了确保可以处理极端负载,您可以使用DOTNET_SYSTEM_NET_SOCKETS_THREAD_COUNT覆盖计算值。未覆盖时,使用以下值: 当DOTNET_SYSTEM_NET_SOCKETS_INLINE_COMPLETIONS是 时1,使用Environment.ProcessorCount值。 如果DOTNET_SYSTEM_NET_SOCKETS_INLINE_COMPLETIONS不是1,则评估RuntimeInformation.ProcessArchitecture: 当 ARM 或 ARM64 时,每个引擎的核心数设置为8,否则为30。 使用确定的每个引擎核心数,1或Environment.ProcessorCount 中每个引擎核心数的最大值。 DOTNET_SYSTEM_NET_DISABLEIPV6 帮助确定 Internet 协议版本 6 (IPv6) 是否已禁用。当设置为true或 时1,除非在System.AppContext 中另有指定,否则 IPv6 将被禁用。 DOTNET_SYSTEM_NET_HTTP_USESOCKETSHTTPHANDLER 您可以使用以下机制之一来配置进程以使用旧的HttpClientHandler: 从代码中,使用AppContext类: C# 复制 AppContext.SetSwitch("System.Net.Http.UseSocketsHttpHandler", false); 该AppContext交换机还可以通过配置文件设置。有关配置开关的更多信息,请参阅库使用者的 AppContext。 同样可以通过环境变量来实现DOTNET_SYSTEM_NET_HTTP_USESOCKETSHTTPHANDLER。要选择退出,请将值设置为false或0。 DOTNET_Jit* 和 DOTNET_GC* JIT 和 JIT 生成的 GC 信息有两个与应力相关的特征:JIT Stress 和 GC Hole Stress。这些功能提供了一种在开发过程中发现边缘案例和更多“真实世界”场景的方法,而无需开发复杂的应用程序。以下环境变量可用: DOTNET_JitStress DOTNET_JitStressModeNamesOnly DOTNET_GCStress JIT压力 可以通过多种方式启用 JIT Stress。设置DOTNET_JitStress为非零整数值以根据方法名称的散列生成不同级别的 JIT 优化。DOTNET_JitStress=2例如,应用所有优化集。启用 JIT Stress 的另一种方法是DOTNET_JitStressModeNamesOnly=1在DOTNET_JitStressModeNames变量中设置并请求以空格分隔的应力模式。 例如,请考虑: 复制 DOTNET_JitStressModeNames=STRESS_USE_CMOV STRESS_64RSLT_MUL STRESS_LCL_FLDS GC 孔应力 启用 GC Hole Stress 会导致 GC 始终发生在特定位置,这有助于追踪 GC 漏洞。可以使用DOTNET_GCStress环境变量启用 GC Hole Stress 。 有关更多信息,请参阅调查 JIT 和 GC 孔应力。 JIT 内存屏障 ARM64 的代码生成器允许MemoryBarriers通过设置DOTNET_JitNoMemoryBarriers为来删除所有指令1。 DOTNET_RUNNING_IN_CONTAINER 和 DOTNET_RUNNING_IN_CONTAINERS 官方 .NET 映像(Windows 和 Linux)设置了众所周知的环境变量: DOTNET_RUNNING_IN_CONTAINER DOTNET_RUNNING_IN_CONTAINERS 这些值用于确定 ASP.NET Core 工作负载何时在容器上下文中运行。 DOTNET_SYSTEM_CONSOLE_ALLOW_ANSI_COLOR_REDIRECTION 当Console.IsOutputRedirected为 时true,您可以通过设置DOTNET_SYSTEM_CONSOLE_ALLOW_ANSI_COLOR_REDIRECTION为1或来发出 ANSI 颜色代码true。 DOTNET_SYSTEM_DIAGNOSTICS 和相关变量 DOTNET_SYSTEM_DIAGNOSTICS_DEFAULTACTIVITYIDFORMATISHIERARCHIAL: 当1或 时true,默认的Activity Id格式是分层的。 DOTNET_SYSTEM_RUNTIME_CACHING_TRACING: 当作为 Debug 运行时,如果是 ,则可以启用跟踪true。 单一变量 DOTNET_DefaultDiagnosticPortSuspend:将运行时配置为在启动期间暂停并等待来自指定诊断端口的Diagnostics IPC ResumeStartup命令。 DOTNET_DiagnosticPorts:代表 Mono 诊断端口的值。 DOTNET_EnableDiagnostics:设置为 时1,启用 Mono 诊断。 DOTNET_EnableEventPipe: 设置为 时1,启用 Mono 事件管道。 DOTNET_EventPipeOutputPath:Mono 事件管道的输出路径。 DOTNET_EventPipeOutputStreaming:设置为 时1,启用 Mono 事件管道输出流。 有关详细信息,请参阅.NET 运行时:Mono 诊断和跟踪。 .NET SDK 和 CLI 环境变量 DOTNET_ROOT, DOTNET_ROOT(x86) 指定 .NET 运行时的位置(如果它们未安装在默认位置)。Windows 上的默认位置是C:\Program Files\dotnet. Linux 和 macOS 上的默认位置是/usr/share/dotnet. 此环境变量仅在通过生成的可执行文件 (apphosts) 运行应用程序时使用。DOTNET_ROOT(x86)在 64 位操作系统上运行 32 位可执行文件时使用。 NUGET_PACKAGES 全局包文件夹。如果未设置,则默认为~/.nuget/packages在 Unix 或%userprofile%\.nuget\packagesWindows 上。 DOTNET_SERVICING 指定加载运行时时共享主机使用的服务索引的位置。 DOTNET_NOLOGO 指定在第一次运行时是否显示 .NET 欢迎和遥测消息。设置为true静音这些消息(值true,1或yes接受)或设置为false允许他们(值false,0或no接受)。如果未设置,则默认为false第一次运行时将显示消息。此标志不影响遥测(请参阅DOTNET_CLI_TELEMETRY_OPTOUT选择不发送遥测)。 DOTNET_CLI_PERF_LOG 指定是否记录有关当前 CLI 会话的性能详细信息。当设置为Enabled 1,true或yes。默认情况下禁用此功能。 DOTNET_GENERATE_ASPNET_CERTIFICATE 指定是否生成 ASP.NET Core 证书。默认值是true,但是这可以通过这样的环境变量设置为或者是重写0,false或no。 DOTNET_ADD_GLOBAL_TOOLS_TO_PATH 指定是否在PATH环境变量中添加全局工具。默认为true. 要不是全球性的工具添加到路径,设置为0,false或no。 DOTNET_CLI_TELEMETRY_OPTOUT 指定是否收集有关 .NET 工具使用情况的数据并将其发送给 Microsoft。设置为true选择退出遥测功能(值true,1或yes接受)。否则,设置为false选择加入遥测特征(值false,0或no接受)。如果未设置,则默认为false且遥测功能处于活动状态。 DOTNET_SKIP_FIRST_TIME_EXPERIENCE 如果DOTNET_SKIP_FIRST_TIME_EXPERIENCE设置为true,NuGetFallbackFolder则不会扩展到磁盘,并且将显示较短的欢迎消息和遥测通知。 DOTNET_MULTILEVEL_LOOKUP 指定是否从全局位置解析 .NET 运行时、共享框架或 SDK。如果未设置,则默认为 1 (logical true)。设置为 0(逻辑false)以不从全局位置解析并具有隔离的 .NET 安装。有关多级查找的更多信息,请参阅多级 SharedFX 查找。 DOTNET_ROLL_FORWARD 确定前滚行为。有关详细信息,请参阅--roll-forward本文前面的选项。 从 .NET Core 3.x 开始可用。 DOTNET_ROLL_FORWARD_TO_PRERELEASE 如果设置为1(启用),则启用从发布版本前滚到预发布版本。默认情况下(0- 禁用),当请求 .NET 运行时的发布版本时,前滚将仅考虑已安装的发布版本。从 .NET Core 3.x 开始可用。 有关更多信息,请参阅前滚。 DOTNET_ROLL_FORWARD_ON_NO_CANDIDATE_FX 如果设置为 ,则禁用次要版本前滚0。有关更多信息,请参阅前滚。 此设置在 .NET Core 3.0 中被DOTNET_ROLL_FORWARD. 应改用新设置。 DOTNET_CLI_UI_LANGUAGE 使用区域设置值设置 CLI UI 的语言,例如en-us. 支持的值与 Visual Studio 相同。有关详细信息,请参阅Visual Studio 安装文档中有关更改安装程序语言的部分。.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 指定一个目录,单文件应用程序在执行之前要提取到该目录。从 .NET Core 3.x 开始可用。 有关详细信息,请参阅单文件可执行文件。 DOTNET_CLI_CONTEXT_* DOTNET_CLI_CONTEXT_VERBOSE:要启用详细上下文,请设置为true。 DOTNET_CLI_CONTEXT_ANSI_PASS_THRU:要启用 ANSI 直通,请设置为true。 DOTNET_CLI_WORKLOAD_UPDATE_NOTIFY_DISABLE 禁用工作负载的广告清单的后台下载。默认为false- 未禁用。如果设置为true,则禁用下载。有关更多信息,请参阅广告清单。 DOTNET_CLI_WORKLOAD_UPDATE_NOTIFY_INTERVAL_HOURS 指定工作负载的广告清单后台下载之间的最小小时数。默认为24- 不超过每天一次。有关更多信息,请参阅广告清单。 COREHOST_TRACE 控制诊断从托管组件跟踪,如dotnet.exe,hostfxr和hostpolicy。 COREHOST_TRACE=[0/1]- 默认为0- 禁用跟踪。如果设置为1,则启用诊断跟踪。 COREHOST_TRACEFILE=<file path>- 仅当通过设置启用跟踪时才有效COREHOST_TRACE=1。设置后,跟踪信息写入指定文件;否则,跟踪信息将写入stderr。从 .NET Core 3.x 开始可用。 COREHOST_TRACE_VERBOSITY=[1/2/3/4]- 默认为4. 该设置仅在通过 启用跟踪时使用COREHOST_TRACE=1。从 .NET Core 3.x 开始可用。 4 - 写入所有跟踪信息 3 - 仅写入信息、警告和错误消息 2 - 仅写入警告和错误消息 1 - 只写入错误信息 以获取有关应用程序启动详细的跟踪信息的典型方法是设置COREHOST_TRACE=1和COREHOST_TRACEFILE=host_trace.txt,然后运行该应用程序。host_trace.txt将在当前目录中创建一个包含详细信息的新文件。 SuppressNETCoreSdkPreviewMessage 如果设置为true,dotnet则在使用预览 SDK 时调用不会产生警告。 DOTNET_WATCH_* 以下 .NET 监视设置可用作环境变量: DOTNET_WATCH:该dotnet watch命令将此变量设置为1启动的所有子进程。 DOTNET_WATCH_ITERATION:每次更改文件并重新启动命令时,该命令都会dotnet watch将此变量设置为1并递增 1。 DOTNET_WATCH_SUPPRESS_STATIC_FILE_HANDLING: 如果设置为1, 或true,则不dotnet watch会对静态内容文件执行特殊处理。 DOTNET_WATCH_SUPPRESS_MSBUILD_INCREMENTALISM:默认情况下,dotnet watch通过避免某些操作(例如restore在每次文件更改时运行或重新评估监视文件集)来优化构建。如果设置为1或true,则禁用这些优化。 DOTNET_WATCH_SUPPRESS_LAUNCH_BROWSER:该dotnet watch run命令将尝试为launchBrowser在launchSettings.json文件中配置的Web 应用程序启动浏览器。如果设置为1或true,则此行为将被抑制。 DOTNET_WATCH_SUPPRESS_BROWSER_REFRESH DOTNET_WATCH_AUTO_RELOAD_WS_HOSTNAME: 作为 的一部分dotnet watch,浏览器刷新服务器机制读取此值以确定 WebSocket 主机环境。的值127.0.0.1被替换localhost,并且http://和https://方案替换为ws://和wss://分别。 DOTNET_HOTRELOAD_NAMEDPIPE_NAME: 该值由dotnet watch应用程序启动时配置,并指定命名管道。 有关详细信息,请参阅GitHub:.NET SDK dotnet-watch。 DOTNET_USE_POLLING_FILE_WATCHER 当设置为1or 时true,dotnet watch将轮询文件系统以进行更改。这对于某些文件系统是必需的,例如网络共享、Docker 挂载卷和其他虚拟文件系统。该PhysicalFileProvider类使用DOTNET_USE_POLLING_FILE_WATCHER,以确定是否PhysicalFileProvider.Watch方法将依托PollingFileChangeToken。 在 .NET CLI 中配置 MSBuild 要执行的MSBuild外的过程中,设置DOTNET_CLI_RUN_MSBUILD_OUTOFPROC环境变量要么1,true或yes。默认情况下,MSBuild 将在进程内执行。要强制的MSBuild使用外部工作节点长寿的过程建设项目,设置DOTNET_CLI_USE_MSBUILDNOINPROCNODE到1,true或yes。这会将MSBUILDNOINPROCNODE环境变量设置为1,称为MSBuild Server V1,因为进入过程会将大部分工作转发给它。 DOTNET_MSBUILD_SDK_RESOLVER_* 这些是用于强制解析的 SDK 任务和目标来自给定的基本目录并向 MSBuild 报告给定版本(null如果未知)的覆盖。一个关键用例是测试 SDK 任务和目标,而无需使用 .NET Core SDK 部署它们。 DOTNET_MSBUILD_SDK_RESOLVER_SDKS_DIR:覆盖 .NET SDK 目录。 DOTNET_MSBUILD_SDK_RESOLVER_SDKS_VER:覆盖 .NET SDK 版本。 DOTNET_MSBUILD_SDK_RESOLVER_CLI_DIR:覆盖dotnet.exe目录路径。 DOTNET_NEW_PREFERRED_LANG 省略开关dotnet new时配置命令的默认编程语言-lang|--language。默认值为C#。有效值C#,F#或VB。有关详细信息,请参阅dotnet new。

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系外文翻译前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档