-
-
Notifications
You must be signed in to change notification settings - Fork 365
Rewrite Loader into C# #2647
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
base: develop
Are you sure you want to change the base?
Rewrite Loader into C# #2647
Conversation
Thanks @romangolev for the huge job! If it was me, I would already got rid of the legacy/ExecuteStartUpPython method and the IronPython dependency, so that we can put the dlls into the bin/netcore and bin/netfx regardless of the selected python engines. for the bundle files, I had an idea a while ago to simplify things and switch from folder-based extensions to manifest-based extensions, I'll open a feature request to see if I'm the only one or if this could be a valuable feature that could already be implemented in this PR |
I think if we create good architecture, we can support two way to create tabs :) |
@romangolev Good Job! I have some doubts about the DI container from Microsoft, we can get into a situation with dll hell and I would like to see a more OOP architecture of this. It would be cool to separate the structure parser from the main libs into a separate one, where there would be no dependence on revit, python and other things, only pure code (service) for parsing the structure. To implement these things that I listed, you need a lot of effort, and make many important decisions, so I think, for a start, to get rid of the python code, your implementation is perfect. |
Agreed; but if we start supporting extra worklflows, I will need pyRevit to provide me a paid job ;o
Side projects I work on that could leverage a manifest based extensions and streamline extension creation
|
@sanzoghenzo it's just the start! The legacy loader has quite a lot of code on and because of that, I believe that gradual approach is preferable. I would say that after implementing this feature we may end up with some unpredictable bugs, so for users to be able to make a step back and activate the old way of loading things might be a walk-around in order not to lose main functionality. |
@dosymep thanks man🙏 Also, the Parser itself doesn't have a lot now, so it wouldn't be a problem to make a separate csproject from it. |
@romangolev how is your progress, I just saw the commits but cannot really test, I need to keep my dev environment clean for a presentation next week. |
@jmcouffin these are the commits regarding to the comments of @dosymep |
blakc formatting
following SanzoGhensi suggestions
Bumps the go_modules group with 1 update in the /dev/pyRevitTelemetryServer directory: [golang.org/x/crypto](https://github.com/golang/crypto). Updates `golang.org/x/crypto` from 0.31.0 to 0.35.0 - [Commits](golang/crypto@v0.31.0...v0.35.0) --- updated-dependencies: - dependency-name: golang.org/x/crypto dependency-version: 0.35.0 dependency-type: indirect dependency-group: go_modules ... Signed-off-by: dependabot[bot] <support@github.com>
update mondo db driver to be latest go.mongodb.org/mongo-driver@latest
…move dependencies
@romangolev you are on fire! |
@jmcouffin consistency is the key! Anyway, the situation is as following:
Probably something else will pop up as well, but this is as far as I can see now 🧐 |
Rewrite Loader into C#
Description
Implementing an AssemblyBuilder, UIBuilder and SessionManager refactored in C# as a substitute for the original Loader which is written in Python.
This feature aims to increase the load speeds on startup and reload events.
Checklist
Before submitting your pull request, ensure the following requirements are met:
Related Issues
If applicable, link the issues resolved by this pull request:
Additional Notes
THIS IS A DRAFT
Entry point is at PyRevitLoaderApplication which now have 2 modules for loading pyRevit sessions:
Adds new project pyRevitAssemblyBuilder which is set as a dependency project for pyRevitLoader and pyRevitRunner.
Whenever one of them built, dependency is built and loaded automatically.
pyRevitAssemblyBuilder is using DI (Dependency Injection) and have a set of services being instantiated on Revit startup as singletons.
On the moment of opening this draft PR, the module is able to build dummy dlls and simplified UI for them (without images and tooltips). Yet does not support yaml bundle files, does not build lib files.
Reviewers
@jmcouffin @sanzoghenzo @dosymep what do you think? Is it a way to go?
Thank you for contributing to pyRevit! 🎉