Hi!
Currently, at work, I’m porting the NET472 app into .Net Core 3.1. As it’s a kind of enterprise application, there are a lot of NuGet packages (younger and older one) that has some (younger and older) dependencies. One of them is ConfigurationManager…
… which means that I have to provide proper configuration in
IConfiguration
interface for .Net core things and
ConfigurationManager
for legacy nuget packages.
Fortunaltey .Net core supports System.Configuration
namespace, so ConfigurationManager
is availabel out of the box.
Sound easy… keep app.config
file with old configuration, put new one in appsettings.json
.
Done.
Not so easy….
We have quite a lot of MSTest
tests over here. I found out, that ConfigurationManager
is not filled with configs from app.config
.
After lots of googling, asking around etc the solution was found in this Github issue
To have it working, I had to add custom target do MSBuild
<Target Name="CopyAppConfig" AfterTargets="Build" DependsOnTargets="Build">
<CreateItem Include="$(OutputPath)App.config">
<Output TaskParameter="Include" ItemName="FilesToCopy"/>
</CreateItem>
<Copy SourceFiles="@(FilesToCopy)" DestinationFiles="$(OutputPath)testhost.dll.config" />
</Target>
to copy “app.config” from my build directory into testhost.dll.config
to let the testhost.dll
read my whole configuration and fill ConfigurationManager
with proper data.
k.