-
Notifications
You must be signed in to change notification settings - Fork 3.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Create a client/server execution model for design-time operations #6128
Labels
Comments
Triage: we believe (for now) that we don't need to do this because a simpler solution based on binding redirects should work. |
This was referenced Jan 10, 2017
👍 on Sounds like when we run out of workarounds we can go a long way by switching to .NET Core instead of .NET Framework (part of #9666). |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Current design
As of #5334, design-time operations execute using two processes, the "dispatcher" and the "runner". The dispatcher (dotnet-ef and PMC) handles interaction the project system and IDE. The runner (ef.exe/ef.dll) is a console application that loads the users assemblies and executes parts of user code in order to discover EF metadata. Dispatcher and runner communicate using standard streams (stdin/stdout/stderr).
Problems the approach begets
Standard streams is not available in all app models. In app models where standard streams are not available, we are forced to imitate the app model using a different runtime.
Example: there is no "console application" for running .NET Core and .NET Native for UWP apps. So instead, we use a .NET Framework console app to load/execute UWP assemblies. The mechanisms for assembly loading and execution are slightly different between .NET Framework and UWP. This the root cause of #5471, #5945, #3543, #4812 and others.
As .NET Standard expands to new app models, this same problem will likely apply to other .NET runtimes that may not support stdin/stdout as method of IPC. This will likely include .NET Native for dotnet-cli, UWP, and Xamarin.iOS/Android/Mac.
Proposed design changes
There is subtle but important distinction between server/client and dispatcher/runner:
The text was updated successfully, but these errors were encountered: