我正在创建一个控制台应用程序使用。NET Core 3.1和我想有一个app设置json加载所有的环境,路径,变量,...在执行开始,然后从其他库类获取值。我创建了一个设置类,其中的数据包含在应用设置json中。这是我已经在教程中找到的,但我无法获得任何价值。
//Start.cs
public class Startup
{
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
Configuration = builder.Build();
}
public IConfiguration Configuration { get; }
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
}
//Settings.cs
public class Settings
{
public ConnectionStrings ConnectionStrings { get; set; }
public Logging Logging { get; set; }
public AppSettings AppSettings { get; set; }
...
//A class to use it in other lib
public class Extractor
{
private readonly IConfiguration _configuration;
public Extractor(IConfiguration configuration) : this()
{
_configuration = configuration;
Init();
}
public void Init()
{
// Extractor:Min is a variable included in appsettings.json
Min = _configuration.GetValue<int>("Extractor:Min")
}
因为我不知道如何初始化所有东西,所以我不能做一个正确的主。。。我错过了什么?我想我一直在为这么简单的事情兜圈子。提前谢谢!注意:我需要从另一个库类中获取这些变量,而不是在Main中。我不知道如何在其他类中初始化“配置”以使用它。谢谢
http://www.techtutorhub.com/article/how-to-read-appsettings-json-configuration-file-in-dot-net-core-console-application/83
帮帮忙!
{
"ConnectionString": "Server=localhost;Database=tempDB;Uid=<dbUserName>;Pwd=<dbPassword>",
"Smtp": {
"Host": "smtp.gmail.com",
"Port": "587",
"Username": "<YourGmailUserName>",
"Password": "<YourGmailPassword>",
"From": "Your Name"
}
}
2.package需要
dotnet add package Microsoft.Extensions.Configuration
dotnet add package Microsoft.Extensions.Configuration.Json
using System;
using Microsoft.Extensions.Configuration;
class Program
{
static void Main(string[] args)
{
var builder = new ConfigurationBuilder()
.AddJsonFile($"appsettings.json", true, true);
var config = builder.Build();
var connectionString = config["ConnectionString"];
var emailHost = config["Smtp:Host"];
Console.WriteLine($"Connection String is: {connectionString}");
Console.WriteLine($"Email Host is: {emailHost}");
Console.ReadLine();
}
}
我也有同样的问题。NET Core和我发现这个解决方案运行良好:
{
"App":
{
"LoginCredentials":
{
"ClientId": "xxx",
"ClientSecret": "xxx",
"TenantId": "xxx"
},
"DataBase":
{
"PathToDatabases": "xxx"
},
"General":
{
"PathToLogFiles": "xxx"
}
}
}
public class AppSettingsHandler
{
private string _filename;
private AppSettings _config;
public AppSettingsHandler(string filename)
{
_filename = filename;
_config = GetAppSettings();
}
public AppSettings GetAppSettings()
{
var config = new ConfigurationBuilder()
.SetBasePath(AppContext.BaseDirectory)
.AddJsonFile(_filename, false, true)
.Build();
return config.GetSection("App").Get<AppSettings>();
}
}
public class AppSettings
{
public LoginCredentialsConfiguration LoginCredentials { get; set; }
public DatabaseConfiguration DataBase { get; set; }
public GeneralConfiguration General { get; set; }
}
每个包含的子类都有一个模型类,我这里只举一个例子:
public class LoginCredentialsConfiguration
{
public string ClientId { get; set; }
public string ClientSecret { get; set; }
public string TenantId { get; set; }
}
var aH = new AppSettingsHandler("appsettings.json");
var aS = aH.GetAppSettings();
var myPath = aS.DataBase.PathToDatabases;
当然,你可以调整代码,使其符合你的需求,也就是说,你必须定义自己的类和子类,当然你可以扩展AppSettingsHandler。通过获取应用程序设置的其他部分来实现cs。json。
您的示例混合了一些ASP NET核心方法,这些方法希望您的代码能够被托管。为了从JSON配置中最低限度地获得选项或设置的问题,请考虑以下内容:
Aconfig。json
文件,设置为“复制到输出目录”,以便将其包含在构建中:
{
"MyFirstClass": {
"Option1": "some string value",
"Option2": 42
},
"MySecondClass": {
"SettingOne": "some string value",
"SettingTwo": 42
}
}
以下方法将从JSON文件加载内容,然后将内容绑定到两个强类型的选项/设置类,这比逐个值要简洁得多:
using System;
using System.IO;
using Microsoft.Extensions.Configuration;
// NuGet packages:
// Microsoft.Extensions.Configuration.Binder
// Microsoft.Extensions.Configuration.Json
namespace SampleConsole
{
class Program
{
static void Main(string[] args)
{
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("config.json", optional: false);
IConfiguration config = builder.Build();
var myFirstClass = config.GetSection("MyFirstClass").Get<MyFirstClass>();
var mySecondClass = config.GetSection("MySecondClass").Get<MySecondClass>();
Console.WriteLine($"The answer is always {myFirstClass.Option2}");
}
}
public class MyFirstClass
{
public string Option1 { get; set; }
public int Option2 { get; set; }
}
public class MySecondClass
{
public string SettingOne { get; set; }
public int SettingTwo { get; set; }
}
}
在的。NET框架4. x,我可以使用在中获取,然后我可以通过 但是在。Net内核,我必须注入,并且不能通过 有没有一种方法可以直接通过获取的值?
我试着把这个项目作为一个正常的参考。但是在重新构建解决方案之后,控制台应用程序仍然没有将.NET核心库作为参考。
我有android应用程序,发布到Play Store。很少有用户出现崩溃 我相信这些报告会存储在谷歌play商店控制台中。我能计算出坠机次数
在Asp。Net Core 3.1应用程序我有以下关于应用程序设置的部分: 我试图获取一些值,比如Facebook的Id,所以我尝试: 但这行不通。。。我怎样才能得到这些值?
我需要调用微软图形API在Azure广告中创建用户。 首先,我需要测试从控制台应用程序,然后需要实现在Azure函数。 https://developer.microsoft.com/en-us/graph/graph-explorer
我在上传文件时遇到错误。Google play控制台中的aab捆绑包与现有密钥库。我有白标签应用程序和密钥库文件 你上传了一个APK或Android应用捆绑包,该捆绑包使用一个密钥签名,该密钥也用于签名交付给用户的APK 在Android应用程序包的概念中,所有30个应用程序都可以使用相同的密钥库文件和密码,还是我们需要为所有30个应用程序创建单独的密钥库和密码?