Visual Studio 2022 System.Environment.GetEnvironmentVariable 不起作用

nas*_*ski 14 c# visual-studio visual-studio-2022

我知道这仍处于预览阶段,但我只是想确保我没有做任何错误的事情,因为我过去做过类似的事情。我在属性中设置了环境变量: 在此输入图像描述

我正在尝试设置我的测试:

[TestInitialize]
public void Initialize()
{
    var test = Environment.GetEnvironmentVariables();
    // test enumerates all the Env variables, don't see it there
    var connectionString = Environment.GetEnvironmentVariable("CONNECTION_STRING");
    if (string.IsNullOrWhiteSpace(connectionString)) // so this is obviously null
        throw new ArgumentNullException("CONNECTION_STRING");
    _ConnectionString = connectionString;
}
Run Code Online (Sandbox Code Playgroud)

正如您从我的评论中看到的,未找到/加载环境变量。

我缺少什么?谢谢。

小智 15

我假设您使用的是 Visual Studio 2022,因为您使用的是 .NET 6 和最小主机(即 no Startup.cs)?

一般偏好是不要将信息存储在环境变量中,因为这些信息通常会上传到 GitHub,并且可能会被搜索并用于对您不利。

对于本地开发机密,首选是使用secrets.json文件存储这些机密。有关如何执行此操作的信息,请参阅安全存储机密,以及有关访问配置文件的详细信息,请参阅访问配置文件信息

对于 TL;DR: Crowd,以下步骤可能会有所帮助(这是我在使用 .NET 6 的 Blazor 应用程序中所做的操作):

  1. 在 Visual Studio 2022 中,右键单击相关项目并选择“管理用户机密”。这将创建一个本地secrets.json文件并打开它。它还会在您的项目磁贴中添加UserSecretsId.
  2. 在此文件中将您的机密创建为 JSON 键值对,就像创建环境变量一样。
  3. 转到项目中的“连接服务”并配置Secrets.json服务。
  4. 将“用户机密”添加到您的配置文件中;这将取决于具体发生的地点。
  5. 将其注入IConfiguration控制器并将其保存到字段中。
  6. 使用以下方式调用您想要的数据:
    {yourConfigurationFieldName}.GetValue<string>({yourJsonKey})
    
    Run Code Online (Sandbox Code Playgroud)

  • 这并没有回答原来的问题。 (6认同)

Joe*_*diz 9

在 Visual Studio 2022 中,您可以通过修改 launchSettings.json 文件的以下部分来访问开发中的环境变量。

"environmentVariables": { "ASPNETCORE_ENVIRONMENT": "开发", "VaultUri": "https://xxx.vault.azure.net/", "AZURE_USERNAME": "xxx@user.com" }

其中 VaultUri 是环境变量的名称。