我正在使用Visual Studio 2017学习通用主机,我正在研究的示例是{{3}}。我逐行重新输入代码,发现红色的波浪线。
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");
})
教育不应专注于记住我们可以轻松查找的内容。它应该着重于解决问题的能力。
答案 0 :(得分: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软件包及其版本。
希望这会有所帮助。