控制台应用程序在部署后未从其配置文件中获取配置值

Posted

技术标签:

【中文标题】控制台应用程序在部署后未从其配置文件中获取配置值【英文标题】:Console application is not taking config values from its config file after deployment 【发布时间】:2020-11-11 23:22:57 【问题描述】:

在我的控制台应用程序中,它创建了应用程序设置并且还有 app.config 文件。

构建后我得到 appname.exe 和 appname.exe.config(它有测试配置值)。

当我在生产中部署这些文件并根据生产更改 appname.exe.config 中的一些条目并通过调度程序运行应用程序时。

它仍然以某种方式获取测试配置值,是不是我弄乱了配置值。对我来说,appname.exe 似乎以某种方式从应用程序设置中获取了条目,而不是加载 appname.exe.config

【问题讨论】:

这能回答你的问题吗? Why my changes of AppSettings in App.config is not taken into account in run-time? (Console Application) 【参考方案1】:

如果我没记错的话,如果您使用 Visual Studio 中的 Settings UI 来设置您的配置...

Settings 存储在应用程序的配置文件中 appname.exe.config 这些设置还具有嵌入在应用程序中的相应默认值 默认值是您在设置 UI中键入的值 如果无法从appname.exe.config 读取配置值,则返回默认值。

【讨论】:

Pressacco,感谢您的回复。我明白你在说什么,但我不明白为什么应用程序没有加载 appname.exe.config 本身......我正在通过任务调度程序运行应用程序 @NileshChandane :可能是权限问题?尝试在没有 Task Scheduler 的情况下运行应用程序。另外,计划任务没有“工作目录”吗?设置好了吗?【参考方案2】:

这是因为您的设置范围设置为Application 而不是user

只需在 Visual Studio 中打开您的 *.settings 文件并将您的属性范围更改为 user

【讨论】:

谢谢!它的工作......只是为了确定,所以我们在应用程序范围内的任何条目都无法在运行时更改,例如在部署应用程序之后如果我想更改让我们说 url,所以我将无法更改来自 appname.exe.config 如果它在应用程序范围下定义?? 您能否确认上述声明,以便我可以将其标记为答案? 不完全是。这个想法是,当您将设置范围设置为Application 时,您的应用程序假定设置文件将存储在路径%appdata%\[CompanyName]\[AppName]\[version]\user.config 下。但如果您将范围设置为user,则假定它存储在可执行文件的同一文件夹中。

以上是关于控制台应用程序在部署后未从其配置文件中获取配置值的主要内容,如果未能解决你的问题,请参考以下文章

未找到模块:错误:包路径 ./locales 在角度更新到 13 后未从包中导出

发送少量通知后未从 GCM 收到推送通知

Spring Boot 库项目未从 /conf 文件夹中选择外部文件配置

@override报错方法未从其超类重写方法?

部署iis后未加载Angular svg图像

数据未从 csv 文件正确加载到配置单元表