Я скачал и настроил недавно выпущенную 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.