CLI commands on desktop: resolve startup assembly from external project #5286
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.
Partial fix for #4577
This is the minimal change we can make that will enable most users to use dotnet-ef for desktop .NET. Although the implementation will other issues for some users, I believe this is a good tradeoff to the high cost of fixing #4577 perfectly.
Why it's not perfect (simplifed): this tries to pull a "child" assembly into a "parent" app domain. The child may have dependencies that conflicts with the "parent" app domain. Should this problem arise (which may not for most users), the solution is to lift dependencies in the project.json for the "child" assembly.
The "proper" way to do this (the way we do it in Powershell) is to only ever load the "child" in an appdomain with its own dependencies, thus avoiding potential for conflict. But implementing this would mean re-working huge parts of CLI commands.