我有一个从我的配置文件中读取设置的方法,如下所示:
var value = ConfigurationManager.AppSettings[key];
Run Code Online (Sandbox Code Playgroud)
只针对.NET Standard 2.0时,它编译得很好.
现在我需要多个目标,所以我用以下内容更新了我的项目文件:
<TargetFrameworks>netcoreapp2.0;net461;netstandard2.0</TargetFrameworks>
Run Code Online (Sandbox Code Playgroud)
但现在,编译失败netcoreapp2.0,出现以下错误消息:
Error CS0103 The name 'ConfigurationManager' does not exist in the current context (netcoreapp2.0)
Run Code Online (Sandbox Code Playgroud)
另外,我创建了一个新的.NET Core 2.0控制台应用程序(这次仅针对.NET Core 2.0),但同样ConfigurationManager在命名空间下似乎没有System.Configuration.
我很困惑,因为它可以在.NET Standard 2.0下使用,所以我希望它可以在.NET Core 2.0中使用,因为.NET Core 2.0符合.NET Standard 2.0.
我错过了什么?
我是.NET Core的新手,如果这是一个新手问题,我很抱歉.我使用VS 2017在.NET Core 2中创建了一个Web API项目.
对我来说,我有appsettings.json一些连接设置的文件.
在阅读了IOptions<T>微软教程后,我正在做类似以下的事情:
public void ConfigureServices(IServiceCollection services)
{
services.AddOptions();
services.Configure<MyOptions>(Configuration);
// I want to access MyOptions object here to configure other services?how do i do that?
service.AddHangfire( // Get MyOptions.HangfireConenctionString etc.)
}
Run Code Online (Sandbox Code Playgroud)
如何访问创建的MYOptions对象ConfigureServices以及是否需要在Configure(IApplicationBuilder app,..)方法中访问它?
我只IOptions<T>在教程中看到了控制器中的注入示例.
我有一个 .NET Framework 控制台应用程序,我正在尝试更新到 .NET 5,但它在需要来自 .NET 的数据的某些点上失败app.config。
关于配置如何工作的相关 文档现在非常有帮助,将其所有示例都作为控制台应用程序...直到您真正查看示例为止,这些示例完全没有帮助。它们都基于一个Main如下所示的块:
static async Task Main(string[] args)
{
using IHost host = CreateHostBuilder(args).Build();
// Application code should start here.
await host.RunAsync();
}
Run Code Online (Sandbox Code Playgroud)
控制台应用程序不是 WinForms 应用程序。应用程序代码不会在 Main 中“启动”;Main是程序的主体,这意味着将使配置真正起作用的行放在方法的末尾意味着在程序准备终止之前它永远不会被命中!
我缺少什么?这些文档示例看起来完全没有意义。我不想提供任何服务;我只是希望现有的配置app.config在启动时被读取并可供配置系统使用,这与它在 .NET Framework 中的工作方式完全相同。恢复旧行为的正确方法是什么?
我正在学习ASP.NET Core,我看到注册MVC服务看起来像这样:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc(options =>
{
options.MaxModelValidationErrors = 100;
});
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,为什么该AddMvc方法需要以Action<MvcOptions>?的形式选择?为什么我不能只创建一个实例MvcOptions并将其传递给函数?