Более элегантные способы разрешения зависимостей nuget для red squiggly в Visual Studio

#visual-studio #nuget #nuget-package

#visual-studio #nuget #nuget-пакет

Вопрос:

Я изучаю универсальный хост с Visual Studio 2017, и образец, над которым я работаю, находится здесь. Я перепечатываю код строка за строкой и нахожу красные волнистые строки.

 var host = new HostBuilder()
    .ConfigureHostConfiguration(configHost =>
    {
        configHost.SetBasePath(Directory.GetCurrentDirectory());
        configHost.AddJsonFile("hostsettings.json", optional: true);
        configHost.AddEnvironmentVariables(prefix: "PREFIX_");
        configHost.AddCommandLine(args);
    })
  

Нажатие ctrl . иногда не работает, если мы не загружаем соответствующие пакеты nuget.

Я пытаюсь исправлять одно за другим, просматривая using пространства имен с последующей загрузкой соответствующих пакетов nuget. К сожалению, это не всегда просто из-за методов расширения, которые существуют в разных пакетах nuget с несинхронизированными именами.

Вопрос

Есть ли более элегантный способ решить эту проблему?

Редактировать

Должен ли я сделать следующие примечания?

 IHost host = new HostBuilder()
    .ConfigureHostConfiguration(icb =>
    {
        //FileConfigurationExtensions class in
        //Microsoft.Extensions.Configuration.FileExtensions
        icb.SetBasePath(Directory.GetCurrentDirectory());

        //JsonConfigurationExtensions class in
        //Microsoft.Extensions.Configuration.Json
        icb.AddJsonFile("appsettings.json");
    })
  

Обучение не должно быть сосредоточено на запоминании чего-то, что мы можем легко найти. Это должно быть направлено на развитие навыков решения проблем.

Ответ №1:

Есть ли более элегантный способ решить эту проблему?

Да, когда мы используем nuget для управления нашими ссылками, в nuget есть записи для хранения установленных нами пакетов.

Возврат в предыдущий каталог:

GenericHostSample.csproj

вы найдете файл проекта GenericHostSample.csproj , затем откройте его, вы найдете следующее содержимое:

   <ItemGroup>
    <PackageReference Include="Microsoft.Extensions.Configuration.CommandLine" Version="2.1.0" />
    <PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="2.1.0" />
    <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.1.0" />
    <PackageReference Include="Microsoft.Extensions.Hosting" Version="2.1.0" />
    <PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="2.1.0" />
    <PackageReference Include="Microsoft.Extensions.Logging" Version="2.1.0" />
    <PackageReference Include="Microsoft.Extensions.Logging.Configuration" Version="2.1.0" />
    <PackageReference Include="Microsoft.Extensions.Logging.Console" Version="2.1.0" />
    <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="2.1.0" />
  </ItemGroup>
  

Итак, мы могли бы узнать, какие пакеты nuget и их версии необходимы для этого проекта.

Надеюсь, это поможет.

Комментарии:

1. ОК. Это означает, что нет элегантного способа. Я закрою этот ответ.

2. @TheInventorofGod, возможно, я не понимаю элегантный способ, который вы сказали, вы можете скопировать приведенный выше код и вставить его в файл проекта .csproj, nuget добавит эти пакеты в ваш проект автоматически, так что вам не нужно добавлять их вручную.