У світі .NET все чудово — платформа рухається в правильному напрямку, нові технології вдосконалюються і стають на ноги. Останнім часом багато розмов про .NET/ASP.NET Core, і здається, що всі забули про Roslyn, який надає широкі документовані можливості по роботі з кодом як під час рантайма, так і в процесі розробки.


Щоб виправити це, ми взяли інтерв'ю у Filip W, Microsoft MVP, контрибьютора Roslyn і просто одного з найбільш популярних у світі ASP.NET блогерів. Чому Filip вважає, що зміни в новому# можуть пройти непоміченими, навіщо писати власні аналізатори коду, а також чому скриптінг на C# краще, ніж будь скриптовом мовою?

Читати далі →

Обробка препроцессорных директив в Objective-C

Мова програмування с препроцессорными директивами складний для обробки, оскільки в цьому випадку необхідно обчислювати значення директив, вирізати непотрібні фрагменти некомпилируемого коду, а потім проводити парсинг очищеного коду. Обробка директив може здійснюватися також під час парсинга звичайного коду. Дана стаття описує обидва підходи стосовно мові Objective-C, а також розкриває їх переваги і недоліки. Ці підходи існують не тільки в теорії, але вже реалізовані і використовуються на практиці в таких веб-сервісах, як Swiftify і Codebeat.

Swiftify — веб-сервіс для перетворення вихідного коду на Objective-C в Swift. На даний момент сервіс підтримує обробку як окремих файлів, так і цілих проектів. Таким чином, він може заощадити час розробникам, бажаючим освоїти нову мову від Apple.

Codebeat — автоматизована система для підрахунку метрик коду і проведення аналізу для різних мов програмування, в тому числі і Objective-C.

Читати далі →

«Хаос .NET-світі — розумна ціна за швидкість розвитку платформи»: інтерв'ю з Андрієм Акиньшиным (JetBrains)



Проект Rider (.NET IDE від JetBrains) дійшов до публічної EAP-версії — саме час докладно розпитати Андрія Акіньшина, одного з його розробників. Але Rider став не єдиною темою нового випуску «Без слайдів». Крім нього, поговорили
  • про бібліотеку BenchmarkDotNet, яку розробляє Андрій
  • про рух Microsoft до опенсорсу і кроссплатформенности
  • про загальний стан .NET-світу і, звичайно,
  • .NET-конференції DotNext (яка, до речі, відбудеться в Москві вже в цю п'ятницю)


Як завжди, під катом є повна розшифровка інтерв'ю.




Читати далі →

.NET Tools. Інтерв'ю з Сергієм Шкредовым (JetBrains), Павлом Авсениным і Олександром Захаровим (DevExpress)


Деякі розробники програмують поглядом. Інші сліпі і програмують на слух\дотик. Окремим товаришам досить маркера і дошки. Але все-таки більшість .NET розробників користується Visual Studio для кодування і дебага, парочкою профайлеров, декомпилятором, плагіном для VCS, браузерних інструментами, R#\CodeRush, тулзой для контролю бази даних, баг-трекером, білд-системою і кавоваркою.
Мені вдалося поговорити з розробниками деяких з перерахованих засобів розробки.
Під катом — нудна і зовсім нецікава реклама, трохи Roslyn, трохи Rider, мінімум CodeRush, малість описані фічі C# 7.0, побіжно розглянуті перспективи .NET і один раз згадується PVS-Studio.

Читати далі →

1С,.Net Core. Динамічна компіляція класу обгортки для отримання подій .Net об'єкта в 1С

Це практичне застосування з попередньої статті .Net Core, 1C, динамічна компіляція, Scripting API.

По суті це продовження .NET(C#) для 1С. Динамічна компіляція класу обгортки для використання .Net подій в 1С через ДобавитьОбработчик або ОбработкаВнешнегоСобытия, але для міжплатформового .Net Core. Але в тій розробці я використовував CodeDom. В .Net Core зручніше використовувати Roslyn Scripting API.

Свого часу робив вручну обгортку для WhatsApp, а там більше 30 подій. При цьому весь процес можна автоматизувати за допомогою кодогенерации і в кінцевому підсумку можна цей код динамічно скомпілювати.

«Створення компонент із використанням технології Native API» є метод для виклику зовнішнього події в 1С ExternalEvent. Синтаксис:

bool ExternalEvent(WCHAR_T* wsSource, WCHAR_T* wsMessage, WCHAR_T* wsData) 

Параметри:

• Тип: WCHAR_T*. Рядок з найменуванням джерела події.
• Тип: WCHAR_T*. Рядок з найменуванням події.
• Тип: WCHAR_T*. Рядок з параметрами події.

Але як wsData будемо передавати посилання на об'єкт, створений з параметрів події.

Отже почнемо.
Читати далі →

CodeRush for Roslyn 16.1.6 — Official Release

Сьогодні выпущен перший реліз CodeRush for Roslyn (далі CRR).


Тепер можна купити ліцензію CRR. Є 2 варіанти купівлі:

  • за 49$ включає безкоштовні оновлення протягом року, технічну підтримку через форум.
  • за 249$ включає все, що доступно в 49$ версії + CodeRush Classic з підтримкою старих версій Visual Studio і повноцінну технічну підтримку.
Через рік можна або продовжити ліцензію, або продовжити роботу без оновлень.

Читати далі →

CodeRush for Roslyn: Part 3 — огляд можливостей для вивчення коду

Кожен день в світі створюється новий код. Багато коду. Якась частина цього коду може бути корисною для вас. Може знизити витрати на розробку або заощадити ваш час. Але щоб скористатися кодом, у ньому необхідно розібратися, тому ледачі розробники більше читають, ніж пишуть. Швидке розуміння як працює код – це цінний навик, який набувається з роками практики. У цій статті ми розповімо як CodeRush for Roslyn (далі CRR) допомагає швидше читати код навіть тим, хто ще не опанував досконало цим навиком. Стаття буде цікава хакерам і ледачим розробникам.



Читати далі →

Видалення Code Contracts c допомогою Roslyn

image

Що таке Code Contracts

Code Contracts були створені командою розробників з Microsoft Research в 2008 році. Завдання Code Contracts описувати припущення про стан в коді, які в подальшому використовуються для перевірки коду на коректність і генерації документації. Передбачалося що Code Contracts стануть частина платформи .NET і отримають підтримку в компіляторі, платформі і Visual Studio. На жаль, підтримка з'явилася тільки в платформі у вигляді класів простору імен System.Diagnostics.Contracts. Для решти потрібні плагіни і додаткові утиліти.
В даний момент проект підтримує SergeyT і ще кілька учасників.


Читати далі →

CodeRush for Roslyn: Part 1 — корисні фічі для розробки через тестування

Ми випускаємо новий продукт — CodeRush for Roslyn, далі CRR. Вже більше 10 років у нас є інший продукт, який називається просто CodeRush, або CodeRush Classic, скорочено CRC. Головна відмінність CRR від CRC в тому, що Roslyn версія використовує парсинг і мовні сервіси вбудовані в Visual Studio. CRR повністю написаний з нуля, тому він швидкий і легкий, і вже містить все необхідне для ефективної роботи.
У цій статті розповім про підтримку тестових фреймворків в CRR. Майже у всіх прикладах буде використаний проект https://github.com/dewe/Money. Цей проект використовує NUnit framework, але ми також підтримуємо xUniut, MSpec, MS Test Framework. Всі розглянуті нижче практики працюють однаково, незалежно від того, який тестовий фреймворк ви використовуєте.

Читати далі →

Введення в Roslyn. Використання для розробки інструментів статичного аналізу


Roslyn є платформою, що надає розробнику різні потужні засоби для розбору та аналізу коду. Але наявність таких коштів недостатньо, потрібно розуміти, що і для чого необхідно використовувати. Дана стаття несе мета відповісти на подібні питання. Крім цього, буде розказано про особливості розробки статичних аналізаторів, використовують Roslyn API.

Читати далі →