我正在构建一个WPF应用程序。我正在使用Visual Studio Community 2015.努力创建一个真正的"发布版本,我正在更改一些构建设置,因此它只生成将安装在用户计算机上的必要文件。所以没有vshost exe,没有生成的XML文件等等(但是我保留了PDB文件的生成)。
除了一个文件外,我拥有我想要的一切。我在每个项目中都有一个App.config文件。我不介意将其复制到我的调试版本的输出目录中,但是在我的" true"发布版本我不想在那里。
该文件已设置为"请勿复制"在其属性。见下图:
尽管有"不要复制"但是,我仍然得到一个" MyAppName.exe.config"每次构建项目时生成的文件 。为什么会这样?我怎么能把它关掉?这很烦人。
感谢您的任何建议!
答案 0 :(得分:12)
app.config的处理很特殊,处理按名称,构建过程将按照以下顺序选择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”的当前属性值。
答案 1 :(得分:1)
visual studio 2017 app.config 被默认复制到输出文件夹后。根据 MS,这是设计使然 vs developercommunity
在 MSBuild 中调用了一个名为 AppConfig 的默认属性,它等于“app.config” 但是,即使将该属性设置为空 - 它仍然会使用 Find 任务找到应用程序配置并复制: https://github.com/dotnet/msbuild/blob/13522d2466ae1634177e2a6a40fefaedff95139c/src/Tasks/Microsoft.Common.CurrentVersion.targets#L1159
我发现最好的解决方法是手动删除它并作为资源添加回来:
<ItemGroup>
<None Remove="app.config" />
<Resource Include="app.config" CopyToOutputDirectory="Never" />
</ItemGroup>
请注意,在此更改后,app.config 根本不会复制到输出目录,但会在解决方案资源管理器中可用。
答案 2 :(得分:0)
在MSBuild参数中添加 <groupId>com.aventstack</groupId>
<artifactId>extentreports</artifactId>
<version>3.0.1</version>
以禁止显示库项目.config文件,库xml文档等。通过上述操作,仅保留了PDB。
此参数也可以添加到csproj文件中,但是我个人认为,将其作为构建配置的一部分更易于管理。