环境变量在新的Visual Studio 2019中为null,但在Visual Studio 2017中不为null

问题描述 投票:2回答:1

我下载并安装了新发布的Visual Studio 2019 Professional,并打开了我一直在使用Visual Studio 2017 Professional的解决方案。

该解决方案包含3个ASP.NET核心项目和1个docker-compose项目。

在2019年启动调试会话时,我在一行中得到一个空引用异常,我指的是我的docker-compose环境变量。

但是,如果我在Visual Studio 2017中打开相同的解决方案,我不会得到此空引用异常,因为从docker-compose.yml文件中正确读取了值。

我查看了两个版本的Visual Studio的设置,似乎没有遗漏任何东西。

// Create intance of item message handler
var container = services.BuildServiceProvider();
var _settings = container.GetService<IOptions<Settings>>().Value;

var itemListenerSettings = _settings.RabbitSettings.ListenerSettings.FirstOrDefault(s => s.Key == "ItemListener");
if (itemListenerSettings.Value != null)
{
  // Register item listener...
}
version: '3.4'

services:
  microserviceapi:
    image: microserviceapi
    container_name: ms
    build:
      context: ./MicroserviceApi
      dockerfile: Dockerfile
    environment:
      RabbitSettings:Hostname: "rabbit"
      RabbitSettings:Username: "user"
      RabbitSettings:Password: "pass"
      RabbitSettings:ReconnectionRetries: "10"
      RabbitSettings:ReconnectionTime: "1000"
      RabbitSettings:ListenerSettings__ItemListener__ExchangeName: "Imagine.ItemManagement"
      RabbitSettings:ListenerSettings__ItemListener__ExchangeType: "topic"
      RabbitSettings:ListenerSettings__ItemListener__QueueName: "foo.Item"
      RabbitSettings:ListenerSettings__ItemListener__RoutingKey: "item.*"

在Visual Studio 2019中运行调试会话时,调用var _settings = container.GetService<IOptions<Settings>>().Value我希望变量RabbitSettings的属性_settings包含我的docker-compose.yml文件中的值,就像在Visual Studio 2017中一样。

c# docker asp.net-core docker-compose visual-studio-2019
1个回答
2
投票

环境变量包含“:”字符。如此处所述:

https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?view=aspnetcore-2.2#environment-variables-configuration-provider

...建议在asp.net核心的环境变量名中使用双下划线'__'而不是':'。 ':'在VS 2017解决方案中运行良好,但VS2019需要双下划线'__'。

© www.soinside.com 2019 - 2024. All rights reserved.