Przyszedłem tutaj z innego (oznaczonego jako duplikat) pytania o dodanie tagu sondującego do pliku App.Config.
Chcę dodać do tego notatkę boczną - program Visual studio wygenerował już plik App.config, jednak dodanie tagu sondującego do wstępnie wygenerowanego tagu runtime nie zadziałało! potrzebujesz osobnego tagu runtime z dołączonym tagiem sondującym. W skrócie, Twój App.Config powinien wyglądać tak:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Text.Encoding.CodePages" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.1.1.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="lib" />
</assemblyBinding>
</runtime>
</configuration>
Zrozumienie tego zajęło trochę czasu, więc zamieszczam to tutaj. Również kredyty dla pakietu NuGet PrettyBin . Jest to pakiet, który automatycznie przenosi biblioteki DLL. Podobało mi się bardziej ręczne podejście, więc nie korzystałem z niego.
Ponadto - tutaj jest skrypt po kompilacji, który kopiuje wszystkie pliki .dll / .xml / .pdb do / Lib. To porządkuje folder / debug (lub / release), co moim zdaniem ludzie próbują osiągnąć.
:: Moves files to a subdirectory, to unclutter the application folder
:: Note that the new subdirectory should be probed so the dlls can be found.
SET path=$(TargetDir)\lib
if not exist "%path%" mkdir "%path%"
del /S /Q "%path%"
move /Y $(TargetDir)*.dll "%path%"
move /Y $(TargetDir)*.xml "%path%"
move /Y $(TargetDir)*.pdb "%path%"