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 Directory
或Build 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
被复制到以
引用它的任何项目。 这很好,因为您只需要配置一个.csproj
文件,并将效果级联到所有引用项目。
Visual Studio 2015及更早版本
对于Visual Studio 2015,我使用@theyetiman的解决方案(请参阅此答案 ):
$(TargetFileName).config PreserveNewest
( Microsoft.CSharp.targets
的导入已经存在。)
Visual Studio 2017
在我的实验中,Visual Studio 2017似乎开箱即用地处理配置文件。 不需要手动修改项目文件。