25 ноября 2009 г.

Обустраиваемся: Reflector add-ins pack

Предыдущая серия. Весь сериал.

Прошу любить и жаловать: сборка адд-инов к рефлектору от 25.11.2009.

Licensing:

Как всегда, абсолютно безвозмездно.

Reflector в сборку не входит: блюдём права редгейта (в свой время Lutz Roeder запрещал распространение дистрибутива, в лицензии от RedGate явных запретов нет, но не будем;)).

Если вы считаете что распространение этой сборки (или какого-либо адд-ина) нарушает чьи-либо лицензионные права, свяжитесь со мной через Sinix.2005@gmail.com. Исправлю.

Инструкции по установке:

1) Распаковать бинарники рефлектора.
2) Распаковать сборку с адд-инами в эту же папку.
2а) Согласиться на замену Reflector.cfg и Reflector.exe.config

Известные проблемы:

  • Win 6.x (Vista/Win2k8) и выше:
    Если вы запускали рефлектор _до_ того как распаковали адд-ины и папка, в которую распакован рефлектор, защищена Virtual Store, рефлектор может не подхватить адд-ины. Лечится либо добавлением вручную, либо удалением reflector.cfg из папки в virtual store.
  • В конфиге прописаны относительные пути к плагинам. Это дело ломается, если рефлектор открывается с текущим каталогом, отличным от собственного каталога рефлектора (он не может найти плагины). Лечится ручной правкой конфига с заменой путей на абсолютные либо ручным добавлением плагинов (ИМХО первый путь проще)спасибо koandrew за замечание!
    Мой комментарий: в висте и позднее можно набрать *.dll в фильтре окна “открыть файл” – вуаля, все dll в текущей и вложенных папках. Select 'em all and let Reflector sort 'em!

В сборку не вошли обёртки над другими программами:
Reflector.Babel, TestDriven.net, Hawkeye

В сборку вошли (англоязычные комментарии – от авторов адд-инов, курсивом – мои, полезные адд-ины выделены жирным):

  • ComLoader: Lists COM components for browsing and converts them into managed interop assemblies.
  • Assembly list:
  • Code:
    • CodeModelViewer: shows the underlying code model objects for selected items.
    • CodeSearch: allows searching for strings and regular expressions in disassembled code.
    • CodeMetrics: analyses .NET assemblies and shows design quality metrics using grid and tree map views.
    • Diff: shows differences between two versions of the same assembly.
      Must have для сравнения новых версий библиотек. Например – для сравнения с 4м фреймворком.
    • Dependency Structure Matrix PlugIn.
    • ExceptionFinder: finds all of the exceptions that might be thrown by a method.
    • PowerCommands: all-in-one от Jason Haley. Заменяет предыдущие плагины (и добавляет новые. Баги в Query Editor (по умолчанию отключен)):
      • AssemblyCollection.Sort: a simple addin that sorts (or reorders) the assembly listing in Reflector to be in alphabetical order.
      • AssemblyListEx: allows you to create assembly list files (.ref) and load a set of assemblies directly into reflector by doulble clicking on the file.
      • CodeShortcut: provides a 'Create Shortcut' context menu item for creating a code:// shortcut on your desktop to the item you currently have selected.
      • Enums: provides a Bit Flag Converter for helping to determine which bits are turned on by providing an integer or vice versa. This addin also includes an Enum Viewer that is a custom enum disassembler (for VB and C# only) that allows the user to decide whether enum fields should be shown in alphabetical order or by value.
      • OpenZip: makes it a little easier to add a dll/exe from a zip file into Reflector's list of assemblies.
  • Debug:
    • Snippy: light weight snippet compiler.
    • Deblector: allows to debug processes from within Reflector.
  • Diagramms:
    • AutoDiagramer: draws class diagrams.
      Абсолютно не впечатляет. Just for fun.
    • Graph (patched). Цитата из статьи: “Recently a friend banged me over the head with Reflector, I had a play, and discovered the wonderful "Graph Plugin", which draws pictures of software. It didn't quite draw the pictures I wanted, so I've added one, and written this article about how easy it was.”
      Адд-ин вырос в отдельный инструмент – Refractor.
    • Live sequence: draws sequence diagrams.
    • TypeTreeMap: now a part of Reflector.CodeMetrics.
      Ссылка утеряна. Автор – Peli. Да-да, тот самый: PEX, QuickGraph.
  • Editors:
    • Review: allows editing and managing annotations during code reviews.
    • RuleSetEditor: an editor for Windows Workflow Foundation rules.
    • ReflexIL: allows to manipulate the IL of a loaded assembly, or inject VB.net/C# code, then write the changes to disk.
  • Export:
    • Xmi4DotNet: exports your model into a UML package to simplify drawing
    • FileDisassembler: can be used to dump the disassembler output to files for any Reflector supported language.
      По той же ссылке можно увидеть FileGenerator. Разницы практически никакой, разве что первый дампит ресурсы как .resx, второй – как .resources. У обоих замечен баг с экспортом генерик-методов: иногда дублируются type parameters (вместо SomeMethod<T> - SomeMethod<T><T>). Причина не найдена.
  • Languages:
    • C++ CLI: extends Reflector with a C/CLI language rendering module.
    • CodeDom: produces the CodeDom code needed to create the contents of the assembly.
      Баг: после установки адд-ина перестают генерироваться “красивые” имена локальных переменных ("bool flag1= false" –> "bool cs<>000001 = false”)
    • PowerShell: renders output as Windows PowerShell script.
    • ReflectionEmit: renders C# code necessary to create the given IL body.
    • Vulcan: to support Vulcan language.
  • Sources:
    • BamlViewer: loads BAML resources (WPF) and renders in XAML format.
    • RunningAssembly.dll: opens an assembly or dependency from a process running on the system.
      Файл удалён, был доступен здесь.
    • SilverlightBrowser: allows browsing the structure of a website and loading Silverlight assemblies.
    • SilverlightLoader:loads and shows the files associated with a Silverlight website.
    • Sql2005Browser: allows to browse .NET assemblies stored in SQL Server 2005 databases.

Комментарии/дополнения? Велкам!

2 комментария:

  1. Уважаемый Sinix, а вы не в курсе, случайно, ReflexIL, который в сборках, научился не ломать BAML в WPF-сборках?

    ОтветитьУдалить
  2. Не в курсе.
    Может имеет смысл сдампить ildasm'ом?

    ОтветитьУдалить