войти зарегистрироваться

.NETРеализация Code Action с помощью Roslyn

Roslyn Services API позволяют легко реализовывать расширения, которые находят и устраняют проблемы в коде прямо в Visual Studio. Roslyn Services API доступно как часть Roslyn CTP.

В этом посте мы реализуем расширение для Visual Studio, которое детектирует вызовы метода Count() у Enumerable, после чего результат проверяется на равенство больше нуля, например, someSequence.Count() > 0. Проблема, заключающаяся в коде, в том, что Count() должен пройтись по всей последовательности, прежде чем вернуть результат. Более правильным подходом в данном случае является вызов метода Enumerable.Any().

Чтобы исправить это, мы реализуем CodeIssueProvider, детектирующий проблему, и CodeAction, который заменяет условие на вызов Enumerable.Any(), как и требуется. Т.е. наш CodeAction изменит что-то типа someSequence.Count() > 0 на someSequence.Any().

.NETБыстрое создание и чтение документов MS Office 2007/2010 из 1С: Предприятие 8

Метод позволяет быстро создавать и читать документы Word, Excel и PowerPoint напрямую
из 1С: Предприятие 8 без установленного Microsoft Office 2007/2010. Скорость создания
документов в несколько раз выше, чем традиционное создание через COM/OLE. Статья
продолжает серию примеров применения на практике 1С.Net: Предприятие. В статье используется разработка Open XML SDK. Для работы
примера необходимы установленные .Net framework 4.0 и Elisy .Net Bridge 4.0.3 и
выше. Пример, сопровождаемый статью, написан для 1С: Предприятие 8.2.13.


Стандарт Office Open Xml



Формат Office Open XML (Open Xml) – это формат XML-файлов, помещенных в zip-архив
для представления текстовых документов и документов электронных таблиц, диаграмм,
презентаций. Компания Microsoft выступила одним из спонсоров сертификации этого
стандарта в 2005 году. Результирующий стандарт ISO/IEC 29500:2008 в четырех частях
был опубликован в ноябре 2008 года.


.NETСравнение объектов в C#.NET из песочницы

C#.NET предлагает множество способов сравнить объекты, как экземпляры классов, так и структур. Способов так много, что без упорядочения этих способов и понимания их грамотного использования и имплементации (при наличии возможности переопределения), в голове, неминуемо, образуется каша.

ASP.NET MVCОбработка всех исключений в контроллерах с помощью атрибута

Всё мы знаем, что в ASP.NET MVC есть такой атрибут HandleErrorAttribute, который как сказано в MSDN
Представляет атрибут, используемый для обработки исключения, вызываемого методом действия.

Но нигде, в том же MSDN не сказано (ткните меня носом дайте ссылку где это написано, если я просмотрел), что он обрабатывает только исключения, устанавливающие код ответа сервера в 500.

Посмотрев на исходный код HandleErrorAttribute легко убедиться в этом. Там имеются следующие строки:

// If this is not an HTTP 500 (for example, if somebody throws an HTTP 404 from an action method),
// ignore it.
if (new HttpException(null, exception).GetHttpCode() != 500) {
    return;
}

Не знаю, как вам, а мне удобнее при возникновении исключения, чтобы пользователи видели специальную страницу для этого, а не «жёлтую страницу смерти» или вообще как браузер отображает стандартную для него страницу с кодом ответа сервера (зависит от настроек в Web.config, но об этом позже).

.NETCериализация статических объектов в C# из песочницы

Контекст

С данным вопросом встретился при работе над одним из проектов, в котором очень много настроек. В виду того что добавление новых настроек происходило по ходу разработки то выявилась необходимость сделать класс к которому можно обратится из любого модуля программы. Для этого конечно был использован статический класс, а назвали мы его AppSettings. Конечно можно было бы использовать Properties.Settings… Не буду вдаваться в детали, но этот вариант не подходил.

Суть проблемы

Из за того что класс является статическим обычная сериализация не работает. Давайте проверим. Допустим, у нас есть простой статический класс:
public static class TestStatic
{
	// Fields...
	private static int _Counter;
	public static int Counter
	{
		get { return _Counter; }
		set
		{
		        _Counter = value;
		}
	}       
}


В общем если класс не был бы статическим, можно было бы использовать System.Xml.Serialization.XmlSerializer. Это не наш случай — класс у нас статический и в этом случае, по тому, что XmlSerializer.Serialize метод требует экземпляр класса, а не тип класса, то компилятор выдаст 'Test1.TestStatic' is a 'type' but is used like a 'variable'.

Блог компании НанософтСАПёР на полях САПР

Мы уже писали о том, что приложение, написанное для nanoCAD, можно запустить в AutoCAD. Но гораздо интереснее наоборот: использовать в nanoCAD код, который был разработан для AutoCAD. Как всегда, я решил делать это играючи.

Оказывается, мысль о том, что можно сделать игру под САПР, приходит не нам одним. Например, в блоге Кина Волмсли (Kean Walmsley), ведущего евангелиста AutoCAD .NET API, есть статья об игре «Сапер». Вот именно этого сапера мы и будем пускать под nanoCAD. Подробности смотрите под катом.
TitleImage

.NETДелаем библиотеку написанную на .Net понятной для Unmanaged кода из песочницы

Пол года проработав в компании, которая занимается программированием на MQL под Meta Trader столкнулся с таким заказом: клиенту нужно что бы программа была написана на C# или VB.Net.

Задача была в том, что бы написать программу на C# и dll на том же языке, которая связывает приложение с торговым советником на MQL. С одной стороны мне это на руку, так как C# изучаю больше года, с другой — стало непонятно, а как же это делается и вообще возможно ли это?
image

КомпиляторыРазрабатываем компилятор для учебного языка Cool на языке C# под .NET (Часть 2 + Бонусы)

Привет, Хабрахабр!

Введение


В данной статье, я, как и обещал, продолжу описание разработки компилятора для языка Cool, начатое в этой статье.

Напомню, что процесс компиляции по фен-шую включает в себя несколько этапов, которые изображены на рисунке ниже слева. Мой же компилятор содержит только три этапа, которые изображены на этом же рисунке справа.

Я пиарюсь Музыкальный плеер Meridian. Прогресс за месяц

Приветствую вас, дамы и господа!

Весь месяц музыкальный плеер ВКонтакте «Meridian» рос и активно развивался. Были достигнуту хорошие результаты, которыми мы и хотим сейчас с вами поделиться.


.NETРазмеры CLR-объектов. Точное определение

Думаю, многим разработчикам на управляемом коде всегда интересовало: сколько же байт занимает экземпляр объекта? А каков лимит размера одного объекта в CLR? Существуют ли различия в выделении памяти между 32-битными и 64-битными системами? Если данные вопросы для Вас не пустой звук, тогда прошу под кат.