应用程序密钥文件内容未包含在项目输出中

时间:2018-08-08 09:48:27

标签: c# visual-studio visual-studio-2017

我有一个包含许多项目的解决方案。在启动项目中,我的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文件?

2 个答案:

答案 0 :(得分:2)

原因是,在file=path中,路径是相对于可执行文件的,而不是相对于 App.config 文件的。因此,它需要与 EXE 文件位于同一文件夹中。您需要像复制操作一样将其复制到构建版本的输出目录。

答案 1 :(得分:1)

我通过在项目输出中包含AppSecrets.config来解决此问题。不确定这是否正确,但是否有效。

我将文件“ build action”设置为Content,将“复制到输出目录”设置为Copy if Newer