我正在学习Visual Studio 2017的通用主机,我正在研究的样本是here。我逐行重新键入代码,我发现红色波浪线。
var host = new HostBuilder()
.ConfigureHostConfiguration(configHost =>
{
configHost.SetBasePath(Directory.GetCurrentDirectory());
configHost.AddJsonFile("hostsettings.json", optional: true);
configHost.AddEnvironmentVariables(prefix: "PREFIX_");
configHost.AddCommandLine(args);
})
如果我们不加载相关的nuget包,按ctrl+.
有时不起作用。
我尝试通过查找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");
})
教育不应该专注于记住我们可以轻易查找的内容。它应该专注于建立解决问题的技能。
有没有更优雅的方法来解决这个问题?
是的,当我们使用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包及其版本。
希望这可以帮助。