Набор полезных утилит и библиотек мира .NET

    Довольно часто так бывает что кто-то когда-то сделал прекрасную вещь, а она либо никем так и не была найдена, либо быстро забыта. Потихоньку я буду стараться предоставлять в серии топиков информацию по различным проектам, на которые стоит обратить внимание. Многие из них специфичны. И тем еще более интересны.

    IL Stub Diagnostic Tool



    IL заглушки (stubs) динамически генерируются во время работы приложения на лету и управляют маршаллингом и вызовом целевого метода. IL Stub Diagnostic tool была создана чтобы улучшить качество отладки приложений. Это real-time монитор, который показывает детали каждой IL заглушки, создаваемой в исследуемом процессе. Для каждой заглушки утилита показывает ее IL код и сигнатуры Managed/Unmanaged методов

    Ссылка на раздел проекта: http://clrinterop.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=29745
    Ссылка на сам проект: http://clrinterop.codeplex.com/

    P/Invoke Interop Assistant



    При маршаллинге существует множество правил и атрибутов для работы с типами. И скорее всего возникают некоторые сложности при работе с ними. Для того чтобы упростить разработку таких мест, был разработан P/Invoke Interop Assistant. Это tool, который с легкостью конвертирует C/C++ в сигнатуры P/Invoke. Он поставляется с базой данных по сигнатурам функций Win32, типам данных и констант. Так что одна из рутинных задач по добавлению Win32 P/Invoke в вашу программу на C# теперь может быть сделана очень просто. Надеемся, она вам понравится.
    Ссылка на раздел проекта: http://www.codeplex.com/clrinterop/Release/ProjectReleases.aspx?ReleaseId=14120
    Ссылка на сам проект: http://clrinterop.codeplex.com/

    Type Library Importer in Managed Code
     

    Tlbimp — консольная утилита, которая создает управляемые сборки, основываясь на библиотеке типов COM. Это утилита, совершенно аналогичная той, которая посталяется с .Net Framework SDK, но написанная полностью на C# (и распространяется в исходных кодах, так что если вам необходимо автоматизировать процесс импорта, это то, что вам надо). Также мы планируем постоянно добавлять в нее все новый функционал, делая ее более настраиваемой.
    Ссылка на раздел проекта: http://www.codeplex.com/clrinterop/Release/ProjectReleases.aspx?ReleaseId=17579
    Ссылка на сам проект: http://clrinterop.codeplex.com/

    Microsoft Accelerator v2


    Microsoft Accelerator 2 — это высокоуровневая библиотека для распараллеливания работы над данными, используя при этом все вычислительные мощности CPU и GPU, установленных на компьютере.
    • Написана полностью на C++, с враппером на управляемый код;
    • Выполнение на многоядерных процессорах, как 32-х, так и 64-разрядных, включая DirectX9 GPU и CUDA;
    • Расширяемый интерфейс целевого железа, позволяющий добавлять новые типы аппаратуры;
    • Возможность запустить программу на нескольких устройствах одновременно, используя один экземпляр Accelerator

    Ссылка: http://research.microsoft.com/en-us/projects/accelerator/

    WPF Application Framework



    WPF Application Framework — это легковесный Framework который поможет вам создавать хорошо структурированные приложения WPF. Он поддерживает архитектуру слоев и MVVM.
    Ссылка: http://waf.codeplex.com/
    Support the author
    Share post
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 15

      +2
      А никто не знает, существует ли под .NET JIT дизассемблер?
      Т.е. по аналогии с IL дизассемблером, только отображается не код CIL код, а именно ассемблерный код целевой машины после JIT компиляции.

      Если не существует, то кто-нибудь знает, как его посмотреть простым способом?
        0
        Ну можно ngen'ом скомпилировать, а потом дизассемблировать. Но это не runtime, конечно
          +3
          Можно в Visual Studio запустить программу на отладку, поставить breakpoint в метод, ассемблерный код которого хотим посмотреть, и, когда программа остановится на breakpoint'e, нажать правой кнопкой мыши на методе и в меню выбрать «Go To Disassembly».
            0
            О, забыл…
            Ищу трудных путей (см. коммент ниже) :(
              +1
              Ну если Visual Studio на машине нет, то можно и при помощи WinDBG + SOS. :)
              0
              Это понятно, но там будет другой Ahead Of Time код, не оптимизированный (в частности даже свойства не инлайнятся).
              А сделано это для удобства отладки.

              Мне нужен именно Just In Time, чтобы посмотреть, как .NET оптимизирует код по максимуму.
                0
                Miguel de Icaza в своей последней статье пишет:
                Second, even if JIT were the only big issue, a JIT can never be as good as a regular optimizing compiler because a JIT compiler is in the business of being fast, not in the business of generating optimal code. Yes, JITters can target the user’s actual hardware and theoretically take advantage of a specific instruction set and such, but at best that’s a theoretical advantage of NGEN approaches (specifically, installation-time compilation), not JIT, because a JIT has no time to take much advantage of that knowledge, or do much of anything besides translation and code gen.
                Так что скорее всего там чудес не будет :)
                  0
                  Я и не говорю про чудеса. Мне просто нужен реальный выполняемый asm код, а не при debug режиме.
                  Да и потом есть различные мнения на счет .NET в этой статье :)
              +1
              Можно при помощи WinDBG+SOS.
              Например, с дампа процесса или подключив WinDBG как отладчик.
              Найти класс (например, !dumpheap -stat), от описателя метода из первой колонки выполняем !dumpmt -md, подбираем нужный (желательно уже JITнутый :) метод, а его адрес даем команде u.

              Получится похоже на:
              0:000> u 66075284
              System_Messaging_ni+0x15284:
              66075284 b8408c0666 mov eax,offset System_Messaging_ni+0x8c40 (66068c40)
              66075289 90 nop
              6607528a e829e9ffff call System_Messaging_ni+0x13bb8 (66073bb8)
              6607528f e92ce9ffff jmp System_Messaging_ni+0x13bc0 (66073bc0)
              66075294 b8308c0666 mov eax,offset System_Messaging_ni+0x8c30 (66068c30)
              66075299 90 nop
              6607529a e819e9ffff call System_Messaging_ni+0x13bb8 (66073bb8)
              6607529f e91ce9ffff jmp System_Messaging_ni+0x13bc0 (66073bc0)

              ngen, наверное, проще. Не пробовал.
            • UFO just landed and posted this here
              • UFO just landed and posted this here
                0
                Странно, почему такой хороший и полезный .NET Reflector не упомянут?
                • UFO just landed and posted this here
                    0
                    Потому что стояла задача осветить как можно более неизвестные продукты. Те что все знают… их и так знают, чего о них рассказывать :)
                    0
                    Вот еще хорошая подборка инструментов разработчика. Я бы добавил сюда: AnkhSVN, VSCommands 2010, Productivity Power Tools, JSEnhancements, ReSharper.

                    Only users with full accounts can post comments. Log in, please.