#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
, затем откройте его, вы найдете следующее содержимое:
<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 добавит эти пакеты в ваш проект автоматически, так что вам не нужно добавлять их вручную.