c# - 我可以读取项目中所有 appsettings 文件的文件名吗
问题描述
我有一个 appsettings 文件,其中包含应用程序中使用的每个环境的所有设置。
IE:
- appsettings.dev.usa.json
- appsettings.qa.usa.json
- appsettings.dev.eu.json
- appsettings.qa.eu.json
这些 appsettings 文件中的每一个都有连接字符串和其他配置设置。
我有一个控制台应用程序,我想根据项目中的文件生成要显示的环境列表。
控制台应用程序将打印出环境列表:
- 美国开发者网站
- qa.usa
- 开发者.eu
- qa.eu
有没有办法可以读取我的 appsettings 文件的名称并在我的控制台应用程序中使用它?
解决方案
如果这些文件在您的项目中被指定为资源文件,您可以获取它们。
在您的项目中,单击每个文件。在每个文件的属性中,都有一个“构建操作”选项。您可以将其设置为“嵌入式资源”(除其他外)。
foreach (var x in System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceNames())
Console.WriteLine(x);
这将转储应用程序中的所有资源。格式将是基于 dotted.folder.file 约定的文件的路径。前任
YourApp.SomeSubFolder.YourAppSettings.YourJSONFile1.json
YourApp.SomeSubFolder.YourAppSettings.YourJSONFile2.json
etc.
要实际读取该文件的内容,您可以通过 ex 执行以下操作:
using (var ms = Assembly.GetExecutingAssembly()
.GetManifestResourceStream( "YourApp.SomeSubFolder.YourAppSettings.YourJSONFile1.json"))
{
if (ms != null)
{
// if the memory stream is good, setup a stream reader to get the content
var sr = new StreamReader(ms);
var readContents = sr.ReadToEnd();
// now you have a string of the json file to work with
}
}
推荐阅读
- c# - 身份用户不工作的EF Core多对多
- r - 通过rowname和colname对R中的矩阵进行子集
- javascript - 为什么我可以在函数中声明之前使用变量
- vue.js - 带有 VueJS 的 OpenLayers - 用空 div 代替地图
- linux - SLURM Jobscript 响应密码请求
- mysql - 为来自不同表的两个单独操作运行多个子查询(相关)并加入一个表
- python - 如何对多个 ML 模型执行网格搜索
- pandas - pandas sqlite read_sql 动态 in 子句
- c# - 如何使用.net c#打开Tor浏览器选项卡
- c++ - 如何仅在单击其中的按钮时销毁 wxWidgets Popup?