I have a class library that is referenced by many other web application projects. It has many settings in its app.config
that I wish to use in all of the referencing web projects. When the class library is built, it copies the app.config
to its own bin
folder as <assembly.name>.dll.config
.
How do I ensure that <assembly.name>.dll.config
is copied to the bin folder of each of my referencing web application projects?
- Visual Studio / MSBuild does not seem to do this by default.
- Changing
Copy to Output Directory
orBuild Action
(in any combination) does not work. - SlowCheetah VS extension appears to do what I want as an unintended side-effect of its config transform process, but I want to do this without any 3rd-party extensions.
As an aside: It's impractical to manually put all of this config in each of the web application projects. I can read the file by looking for <assembly.name>.dll.config
in the bin folder, and extract the settings from there. I can already do this, so that's not an issue - I just need to ensure the file is going to be there for reading
This can be achieved without 3rd-party tools by adding the following to the class library's project file,
assembly.name.csproj
:This causes the
app.config
to be copied to whichever project is referencing it as<assembly.name>.dll.config
. It's good because you only need to configure the one.csproj
file and the effect cascades out to all referencing projects.Visual Studio 2015 and earlier
For Visual Studio 2015, I am using the solution of @theyetiman (see this answer):
(The import of
Microsoft.CSharp.targets
was already present.)Visual Studio 2017
During my experiments, Visual Studio 2017 seems to handle configuration files as expected out of the box. No manual modification of the project file is needed.