-
Notifications
You must be signed in to change notification settings - Fork 97
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
Have shell not hold reference to original files when adding an explicit file reference #51
Comments
+1 on this one. At least the capability to unload the AppDomain and load it again |
Good input, thanks. The dll is locked by the underlying scripting engine. So we don't have much control over that. So shadow copying (what VS uses) is not really an option. Running the scripting engine in a seperate AppDomain is a possibility. But it would make the interaction from the scripts with the UI much more cumbersome, since everything has to pass through MarshalByRefObjects or another serialization interface. Currently the scripting engine runs in the same AppDomain as the UI. This is problem is REALLY annoying me too. Since at our company we have many CShell extensions and libraries that we work on daily and I have to always restart CShell whenver there's a change to our library. So, trust me, if I could easily fix this I would. |
On second thoughts about closing this. I will not close it but just assign it into the far future. |
I have a "free time" project where i ve integrated scriptcs with avalonedit and the completion sample. I ve managed to make it work on a different app domain but it took quite a different structure than cshell. Want me to go over the diffs? (I tried to base it on cshell initally but it proved too "complete" for me to get started) Sent from a device with a small keyboard
|
Yes, the devil is in the detail. In particular, it turned out to be difficult to have a tight integration between script code completion, REPL code completion, loaded libraries, and the scripting engine when running it all in a separate app domain. I've tried to keep CShell as simple as possible in terms of architecture (maybe, turns out, a bit too simple), so that it has more of a hackers tool feel to it... Wanna unload the app domain? Just close and open the whole app... It's just difficult to stay simple without ending up re-implementing SharpDevelop/MonoDevelop/VisualStudio which are all much more mature projects of course. I'd love to hear your input in how you designed it in your project! |
Hey Luke! Ok, here's my approach. As you say, starting to implement either Here are the steps I took, not necessarily in this order:
How's it sound? |
If a DLL file reference is added in the workspace, add the ability to recompile the DLL via visual studio while the object is still referenced by CShell
In order to gain new functionality after recompiliation possibly provide a dialog that notifies the user a reference has been updated and ask to reload.
Also add the ability to easily reload the REPL window from the C# interactive UI.
Perhaps a .ResetWorkspace could be on the shell in addition to the OpenWorkspace() and CloseWorkspace()
The text was updated successfully, but these errors were encountered: