问题:
我们有一个针对net472;net6.0
的多目标项目。
在net472
分支中,它使用App.config
(存在于项目的根目录中)来配置各种设置(GCHeapCount,跟踪中的锁,最小支持运行时间,GC)。它工作得很好,App.config
会自动复制到输出为<projectName>.exe.config
,然后在应用程序启动时自动加载。
问题出在net6.0
分支上。显然,我们不想在编译时重用相同的App.config
。主要是因为App.config
中支持的运行时是错误的;第二,因为我们想要以不同的方式配置GC,等等。
但是,令人遗憾的是,似乎msbuild/roslyn(不确定是谁)仍然采用App.config
,将其复制到输出为<projectName>.exe.config
;当dll启动时-配置被加载(在ConfigurationManager.PrepareConfigSystem
上),这实际上并不起作用,因为例如system.diagnostics跟踪设置是不可识别的。
所需状态:
理想情况下,我希望net472
分支没有太多更改,并且net6.0
分支简单地忽略App.config
文件,即,因此它甚至不会复制到编译的输出文件夹。
尝试:
我一直在寻找一种方法来做这件事。
必应聊天(Bing chat)给了一个不起作用的答案(时代的标志?),谷歌主要是关于App.config
被无意中忽略的问题,我发现的唯一接近的东西是:https://developercommunity.visualstudio.com/t/vs-always-copies-all-appconfig-files-to-output-fol/19696,但仅包含发布的解决方法;没有什么只是编译。
我也试过这个把戏:
<ItemGroup>
<Content Remove="App.config" />
<None Include="App.config" />
</ItemGroup>
但那也没用
1条答案
按热度按时间e3bfsja21#
看起来app.config支持在
Microsoft.Common.CurrentVersion.targets
中,它是随SDK一起分发的。FindAppConfigFile
task与None
一起使用作为主列表,Content
作为辅助列表。名为AppConfig
的属性设置了文件的路径和名称。如果AppConfig
属性已经有值,则不会调用FindAppConfigFile
任务。您可以尝试以下操作:
这应该确保对于
net6.0
分支,该文件被忽略。如果需要特定于
net6.0
的app.config,您可以为文件指定任何名称并设置AppConfig
属性,例如:无论源文件的名称如何,生成的配置文件名都将是
$(TargetFileName).config
。