如何不将app.config文件复制到输出目录

我正在构建一个WPF应用程序。 我正在使用Visual Studio Community 2015.为了创建一个“真正的”发布版本,我正在更改一些构建设置,因此它只生成将安装在用户计算机上的必要文件。 所以没有vshost exe,没有生成的XML文件等等(但我保留了PDB文件生成)。

除了一个文件,我拥有我想要的一切。 我在每个项目中都有一个App.config文件。 我不介意将其复制到我的调试版本的输出目录中,但在我的“真正”版本构建中,我不希望它在那里。

该文件已在其属性中设置为“不复制”。 见下图:

App.config图片

尽管有“不要复制”设置,但我仍然会在每次构建项目时生成“MyAppName.exe.config”文件。 为什么会这样? 我怎么能把它关掉? 这很烦人。

谢谢你的建议!

app.config的处理很特殊, 按名称处理,构建过程将按照以下顺序选择app.config文件:

  • 选择主项目中设置的值$(AppConfig)。
  • 在与项目相同的文件夹中选择@(无)App.Config。
  • 在与项目相同的文件夹中选择@(Content)App.Config。
  • 在项目的任何子文件夹中选择@(无)App.Config。
  • 在项目的任何子文件夹中选择@(Content)App.Config。

$(AppConfig)是一个MSBuild属性,如果它是空的,它将在“无”或“内容”MSBuild项目组中查找名称为“App.Config”的文件,如果匹配,则使用该文件并将被复制到输出目录,用[AssemblyName] .config替换app.config名称

如果你想保留文件而不删除它,你需要将“Build Action”属性改为与“None”或“Content”不同的东西,你可以使用列表中的任何现有值(我建议“AdditionalFiles”)或者您想要使用的任何值,即“MyConfigFile”,现在将保留文件在项目中,但没有在输出目录中生成配置文件的逻辑。

或者,您可以将文件重命名为“app.config”以外的其他内容,并保留“Build Action”和“Copy to Output Directory”的当前属性值。