Refactor to avoid loading System.ServiceModel assembly #2767
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
When WCF is not used the System.ServiceModel assembly is not required. With this refactoring the runtime will avoid loading the assembly if WCF if not used.
Edit: My main motivation behind this change it to be able to use CefSharp with .NET Core 3.0. While in the long term it may be better to generate .NET Core specific assemblies, this change allows .NET Core which does not have System.ServiceModel to load the .NET Framework assemblies. As a side effect it also results in a slightly smaller memory footprint for .NET Framework applications that don't use WCF.
I have tested this change by using the NuGet packages (CefSharp.Common/CefSharp.WinForms generated using
build.ps1 vs2017
) and checking the loaded assemblies when running a program in Release mode. I've also tested it with a .NET Core 3.0 application and it loads up properly (instead of just crashing).