msbuild、dotnet sdks、azure、kudu等使用的环境变量列表

Posted

技术标签:

【中文标题】msbuild、dotnet sdks、azure、kudu等使用的环境变量列表【英文标题】:List of environment variables used by msbuild, dotnet sdks, azure, kudu, etc 【发布时间】:2017-10-16 00:12:21 【问题描述】:

所以,当我在 VSTS 和 azure 部署中摆弄 CI 构建时,这主要是我想到的。通过各种 github 问题、文档、堆栈问题、随机博客文章、阅读源代码等。我遇到了工具使用的不同环境变量。最近DOTNET_*的人喜欢:

DOTNET_SKIP_FIRST_TIME_EXPERIENCE - 告诉构建代理不要缓存包。由于托管代理无论如何都会转储缓存,因此在文档中的注释中建议这样做以提高性能。 DOTNET_CONFIGURE_AZURE - 告诉_WebConfigTransform 目标将web.configstdoutlogfile 设置为\\?\%home%\LogFiles\stdout

其他人是通过 azure web 应用程序和那里的配置提出来的:

WEBSITE_NODE_DEFAULT_VERSION WEBSITE_SITE_NAME 还有其他WEBSITE_* DIAGNOSTICS_AZUREBLOBCONTAINERSASURL 还有其他DIAGNOSTICS_* KUDU_*SCM_* 我见过用于操纵 Web 应用程序下的托管环境和 kudu 环境的各个方面 当我转到 KUDU 控制台并检查那里的环境变量时,我还看到了 AZURE_*、更多 DOTNET_* 和一堆其他人

我认识到每个前缀都指定了一个描述相关环境变量集的“命名空间”,因此我不太可能找到包含所有这些信息的主位置。

但我的问题是对于这些领域中的每一个,在哪里可以找到某种明确的列表,甚至是重要环境变量及其功能的一般列表?

我觉得我理解这些设置和标志的路径非常基于随机碰撞,在几乎没有完成实际工作的情况下产生大量热量。我宁愿在一个非循环的、加权的、有向图上回答,知道我的意思吗?即使我只是贪婪地寻找最短路径,这似乎也比在谷歌上搜索不同的问题并偶然发现深埋在 github 存储库或博客文章中的东西要好。有人可以在这里给我一个优势吗?

背景是,在我升级到 netcore1.1/vs2017/csproj 并且我的 CI 构建停止为 azure Web 应用程序部署正确转换我的 web.config stdoutlogfile 路径后,我最终不得不深入研究websdk 源并通过一些变量替换来回溯,以查找目标在为 Azure 配置发布时确定要使用的环境变量的位置。我希望在dotnet publish 的文档中找到一些带有“这里是可能影响发布命令输出的环境变量”部分的页面,但空手而归。

【问题讨论】:

我翻遍了互联网寻找相同的信息。我一直无法找到一个明确的清单。我的想法是看看是否有一个 Azure Powershell 命令可以迭代所有构建变量,然后将其作为任务包含在 VSTS 构建过程中并在输出中捕获列表。我的第二个想法是查看 *** 中的 vsts-build 标签,并查看在 MSFT 工作的最近和历史最高的海报。我注意到 starain-MSFT 已列出。当我标记了从事产品工作并监控这些订阅的 Microsoft 团队成员时,我通常会得到很好的回应。 还有一个:我发现@AzureSupport 在 Twitter 上对这些似乎不存在文档的问题非常敏感。虽然监控帐户的人可能不知道,但他们总是将问题上报给工程师并让我回答。 谢谢你,这样随机弹跳少一点,在这种情况下不感到孤独是一种宣泄。我的蛮力解决方案的想法是遍历每个 git repo 并搜索前缀并开始记录它们的使用位置,但是天哪,只是必须有一些内部 MSFT 列表或其他东西,开发人员如何自己跟踪它? 这不仅仅是我的印象,.net 正在失去概述,所有这些热量更可能是一个补丁/修补程序而不是真正的环境 vars 现在打算尝试未记录的ALLOW_5MINUTES_COFFE_BREAK_FOR_DEVELOPERS... 我是 VSTS 开发人员,我可以确认没有包含 VSTS 能够运行的所有可能构建工具的 env var 的“完整”列表。 VSTS 只是一个构建编排器。这是构建中可用的所有 VSTS 环境变量的链接。我知道这不是您要查找的列表,但也许其他人也可以发布指向他们在此处找到的任何其他文档的链接。 docs.microsoft.com/en-us/vsts/build-release/concepts/… 【参考方案1】:

至少对于应用服务来说,这是一个很好的列表 - 有 SCM-* 和其他一些更侧重于部署的变量。​​

https://docs.microsoft.com/en-us/azure/app-service/reference-app-settings

更多 Kudu 特定的可以在这里找到

https://github.com/projectkudu/kudu/wiki/Configurable-settings

SDK 设计指南中还有一个AZURE_ 变量的小列表:

https://azure.github.io/azure-sdk/general_azurecore.html#environment-variables

【讨论】:

以上是关于msbuild、dotnet sdks、azure、kudu等使用的环境变量列表的主要内容,如果未能解决你的问题,请参考以下文章

使用 dotnet 和 MsBuild 构建 .NET 应用程序有啥区别?

dotnet cli与新vs2017 msbuild的关系

dotnet 通过引用 msbuild 程序集实现自己定制编译器

dotnet 通过引用 msbuild 程序集实现自己定制编译器

在 Azure Pipelines 上构建 .NET Core 3.0

如何创建一个 msbuild 目标以在“运行”目标(dotnet 运行)之后运行?