Переменные среды равны нулю в новой Visual Studio 2019, но не в Visual Studio 2017 - PullRequest
2 голосов
/ 05 апреля 2019

Я скачал и настроил недавно выпущенную Visual Studio 2019 Professional и открыл решение, над которым я работал, в Visual Studio 2017 Professional.

Это решение содержит 3 проекта ASP.NET Core и 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.

1 Ответ

2 голосов
/ 25 апреля 2019

Переменные среды содержат символы «:».Как указано здесь:

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

... рекомендуется использовать двойное подчеркивание '__' вместо ':' в именах переменных среды в ядре asp.net.':' отлично работает в решениях VS 2017, но VS2019 требует двойного подчеркивания '__'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...