如何在子项目中读取appsettings文件的内容

嘉里

想知道是否有可能在运行时读取一个项目(该项目不是ASP.NET Core解决方案的主要项目)中的包含常量(独立于此对象是否在开发/生产中)的json / xml文件?

我没有考虑将所有内容都移到appsettings.json,也不想将所有内容都转换成一个巨大的类。

显然,在运行时如果我正在运行该行:

var configurationContent = File.ReadAllText(ConfigurationFileName);

当配置文件位于非主项目中时,该过程将在主项目目录中查找该文件。

我该如何解决?

阿萨米

编辑:通常,您可以配置可以作为注入的选项IOptions<MyConfiguredOption>这是首选的方式。在您的configureservice方法中

services.Configure<MyConfiguredOption>(options => Configuration.GetSection("MyConfiguredOption").Bind(options));

旧答案:您可以做的是确保将appsettingsfile(或所需的任何文件)复制到输出目录。右键单击它>属性>始终复制到输出目录。

调整webhostbuilder并将基本目录设置为它

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseKestrel()
            .UseContentRoot(AppContext.BaseDirectory) // <--- this line
            .UseStartup<Startup>();

现在,文件将始终位于可运行应用程序的输出目录中,因此它对其引用的每个程序集均可访问。

现在,当您要加载文件内容时,请按以下步骤进行操作

var configurationContent = File.ReadAllText(Path.Combine(AppContext.BaseDirectory, ConfigurationFileName));

尽管这可行,您可以只注册配置并注入IConfiguration来访问应用程序设置。

services.AddSingleton(typeof(IConfiguration), Configuration);

这也不是首选方式

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何份额的.properties从父项目文件到子项目

如何在多模块Maven项目中让子项目继承超级项目的依赖版本?

如何在运行gradle compileJava时修复相关子项目中的“找不到符号错误”

子项目中的Gradle扩展属性

如何在离子项目中将长字符串自动换行

如何在子项目中引用自定义SBT设置

子项目中的可可足类

如何在电子项目中保护源代码

如何在离子项目中设置起始页

如何避免cmake子项目中的名称冲突?

如何检测离子项目中元素的点击?

在配置阶段如何使用相邻子项目中的类

如何在离子项目中使用Ionic native-MS Adal?

如何在不同的子项目中使用相同的文件组定义

如何在子项目中具有相同的依存关系而不重复自己?

在子项目中修改Gradle任务

如何避免“盒子项目”包装内容?

如何在Ionic 4.7.1(仅IOS)中从离子项目中删除箭头

在离子项目中输出XML文件数据

如何在具有多个子项目的SBT项目中覆盖子项目中的设置

记住子项目中对象的状态

如何在离子列表,离子项目中使用CSS

如何在Gradle子项目中使用Gradle Artifactory插件

如何在Rmarkdown中的子项目符号之间添加内容

如何在子项目中选择任务的行(在主项目中)

Gradle:如何覆盖子项目中的变量?

如何在离子 4 中为离子项目的内容设置块样式?

Gradle:合并子项目中的 jars

在根项目中定义子项目闭包时如何获取当前子项目