Skip to content
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

Reflexil 2.0 #4

Open
ali-hm opened this issue Oct 26, 2015 · 14 comments
Open

Reflexil 2.0 #4

ali-hm opened this issue Oct 26, 2015 · 14 comments

Comments

@ali-hm
Copy link

ali-hm commented Oct 26, 2015

Hi,
Please update Reflexil plugin to v 2.0. it is already released for Redgate .Net Reflector.
Thank you

@tsviatko
Copy link
Contributor

Yep we have this on our list and we'll get to it soon.

Of course, you are more than welcome to help us with that now that our source is available here. We'll gladly consider a pull request with that update.

@sailro
Copy link

sailro commented Dec 31, 2015

I am also thinking of directly integrating the JD plugin into the main Reflexil repo. Now that I wrote everything needed to support ILSpy, it should be easy. And it will be easier for you to not upgrade your codebase each time a new version is released.

@tsviatko
Copy link
Contributor

tsviatko commented Jan 5, 2016

That is great Sebastien. Could you do this? If there's anything we could help with just let me know.

@sailro
Copy link

sailro commented Jan 5, 2016

Yes, I will start working on this soon.

@sailro
Copy link

sailro commented Jan 5, 2016

I made a quick review of the API surface, and I would need some stuff to properly integrate everything.

1- Have access to the list of all assemblies loaded into JustDecompile. You already expose a IAssemblyManagerService, so It would be great to have a property like:

IEnumerable<IAssemblyDefinition> LoadedAssemblies

2- Override ToString() for all objects implementing [IAssemblyDefinition, ..., IFieldDefinition, etc.]. In fact all objects forwarding data from your Mono.Cecil implementation should also forward the ToString(). It should not break anything as your assemblies are obfuscated and currently those objects only return a non human readable Namespace.Typename as ToString(). And this should be useful for a better member matching with alternate code models (and great for debugging).

3- Expose something to hot replace an assembly given a filename and a stream. I made a pull request for ILSpy and Redgate also implemeted this into Reflector. This allow Reflexil to craft an assembly in memory and to give this assembly back to the 'host'. Something like this in the IAssemblyManagerService:

IAssemblyDefinition HotReplaceAssembly(string file, Stream stream)

This should also transparently refresh the treeview and re-select the proper node to preserve user selection. See https://github.com/icsharpcode/ILSpy/pull/523/files. Reflexil currently calls this after member injection/deletion and allow the user to manualy sync after a method alteration for exemple.
Here is demo of this feature with ILSpy:
https://www.youtube.com/watch?v=ZhancUbQN2k (you can quick move to 3'36)

4- ITreeViewNavigatorService should expose the active treeview item like:

ITreeViewItem ActiveItem

Feel free to send me a beta build :)

@tsviatko
Copy link
Contributor

tsviatko commented Jan 7, 2016

OK we can easily do all that. The chances are we are going to have a deliverable some time around Jan 20th. We have a release coming up the next week and that's why the delay.

I'll be in touch again once we've done everything on our side. Thanks for the input. I really appreciate this.

@sailro
Copy link

sailro commented Jan 8, 2016

Great. Another request if possible on IEventAggregator :

AssemblyLoadedEvent : CompositePresentationEvent<IAssemblyDefinition>
AssemblyUnloadedEvent : CompositePresentationEvent<IAssemblyDefinition>

@tsviatko
Copy link
Contributor

Should not be a problem.

@tsviatko
Copy link
Contributor

I am mailing a beta of JD with the new API to you now. Please, check it out.

@sailro
Copy link

sailro commented Jan 19, 2016

Seems that I am not in the mailing list. Can you add me please? sebastien[at]lebreton[dot]fr
Thanks

@tsviatko
Copy link
Contributor

I sent it to an old address of your I had from years ago. Should be with you now.

@sailro
Copy link

sailro commented Jan 19, 2016

Nope still nothing. :(

@tsviatko
Copy link
Contributor

Well I have no failure notification or anything. That's really weird. Could you send me an e-mail to tsviatko.yovtchev[at]telerik[dot]com? I'll try replying to your message with and without attachment.

@sailro
Copy link

sailro commented Jan 26, 2016

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants