我有一个包含许多项目的解决方案。在启动项目中,我的App.config
引用了appSettings
元素中的另一个文件。但是,当我在编译后的StartUpProject.exe.config
文件建立后打开它时,它不包含来自AppSettings.config
的数据。
App.config
<?xml version="1.0" encoding="utf-8">
<configuration>
<appSettings file="AppSecrets.config">
<add key="config variable" value="this key works"/>
</appSettings>
</configuration>
AppSecrets.config
<appSettings>
<add key="secret config variable" value="this key does not work"/>
</appSettings>
AppSecrets.config
文件与项目中的App.config
存储在同一目录中,但是从源代码管理中被忽略。
Solution
|_ StartUpProject
| |_ SourceFiles.cs
| |_ App.config
| |_ AppSecrets.config
|_ SubProject1
| |_SourceFiles.cs
|_ SubProject2
| |_SourceFiles.cs
|_ SubProject3
|_SourceFiles.cs
我希望在内置的StartupProject.exe.config
文件中看到类似以下的内容。
<?xml version="1.0" encofing="utf-8">
<configuration>
<appSettings>
<add key="config variable" value="this key works"/>
<add key="secret config variable" value="this key does not work"/>
</appSettings>
</configuration>
我做错什么了吗?我的期望错了吗?要使此功能正常运行,是否需要在项目输出中包含AppSecrets.config
文件?
答案 0 :(得分:2)
原因是,在file=path
中,路径是相对于可执行文件的,而不是相对于 App.config 文件的。因此,它需要与 EXE 文件位于同一文件夹中。您需要像复制操作一样将其复制到构建版本的输出目录。
答案 1 :(得分:1)
我通过在项目输出中包含AppSecrets.config
来解决此问题。不确定这是否正确,但是否有效。
我将文件“ build action”设置为Content
,将“复制到输出目录”设置为Copy if Newer
。