Visual Studio / MSBuild将引用类库的app.config复制为* .dll.config到当前项目的bin文件夹

我有一个类库 ,被许多其他Web应用程序项目引用。 它在app.config中有许多设置,我希望在所有引用Web项目中使用它们。 构建类库时,它会将app.config复制到其自己的bin文件夹中,作为.dll.config

如何确保将.dll.config复制到每个引用Web应用程序项目的bin文件夹中?

  • 默认情况下,Visual Studio / MSBuild似乎不执行此操作。
  • Copy to Output Directory更改Copy to Output DirectoryBuild Action (以任意组合)不起作用。
  • SlowCheetah VS扩展似乎做了我想要的作为其配置转换过程的意外副作用,但我想这样做没有任何第三方扩展。

暂且不说:在每个Web应用程序项目中手动放置所有这些配置是不切实际的。 我可以通过在bin文件夹中查找.dll.config来读取该文件,并从那里提取设置。 我已经可以做到这一点,所以这不是问题 – 我只需要确保文件将在那里阅读

通过将以下内容添加到类库的项目文件assembly.name.csproj ,可以在没有第三方工具的情况下实现此目的:

 // Find this  element for Microsoft.CSharp.targets  // Add this  element immediately after   $(TargetName).dll.config PreserveNewest   

这会导致app.config被复制到以.dll.config引用它的任何项目。 这很好,因为您只需要配置一个.csproj文件,并将效果级联到所有引用项目。

Visual Studio 2015及更早版本

对于Visual Studio 2015,我使用@theyetiman的解决方案(请参阅此答案 ):

      $(TargetFileName).config PreserveNewest   

Microsoft.CSharp.targets的导入已经存在。)

Visual Studio 2017

在我的实验中,Visual Studio 2017似乎开箱即用地处理配置文件。 不需要手动修改项目文件。