понедельник, 20 июня 2011 г.

Text Templating failed to load...

Еще одна забавная ошибка терзает меня не первый месяц в VS2010. Не работает T4 (Text Template Transformation Toolkit), падает, в основном, с такой ошибкой (или предупреждением):

Package 'Microsoft.VisualStudio.TextTemplating.VSHost.OrchestratorPackage, Microsoft.VisualStudio.TextTemplating.VSHost.10.0, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' failed to load...

Эта хрень возникает после установки английской студии на машину, где раньше стояла русская. Разгадка таится в следующем ключе в реестре:

HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\10.0\DSLTools\ShowWarningDialog

Злобная VS RU оставила нам там подарочек в виде значения:

Истина/Ложь

Так что есть смысл поменять на соответствующее нерусское слово (True/False) и радоваться.
Ссылка на баг репорт в Microsoft Connect

Проблемы с VS2010 SP1 | MS Security Essentials

Пол утра пытаюсь установить первый сервис пак на vs2010, при ужасно медлительной установке, и в результате стабильно получаю следующую ошибку:
"Microsoft Visual Studio 2010 Service Pack 1 cannot be installed because the state of this computer does not support it."
Кофиг такой: Windows 7, Visual Studio 2010 Professional, x86
Оказывается! Надо тупо доставить из оригинального установщика нечто под названием "Microsoft Office Developer Tools". Супер.
---
Помимо прочего TuneUp ругается на фиговые драйвера, имена которых начинаются на "MpKsl". Это нагадил туда MS Security Essentials. Снёс все с восклицательным знаком, не жалею.

вторник, 14 июня 2011 г.

Подменяем внешние библиотеки в зависимости от конфигурации

Один из проектов запущен на 64-х битном сервере, но на рабочих местах разработчиков в основном стоит x86 система. Я прикручивал систему логирования (elmah) в качестве внешней библиотеки и приходилось каждый раз при публикации заменять x86 файлы для тестирования разработки на версии x64.

Результатом стал небольшой скрипт, вписанный в события построения (Project Properties->Build Events):


if $(ConfigurationName) == Debug (
    xcopy /s/e/y/i/r/f "$(SolutionDir)Dlls\Elmah-x86" "$(TargetDir)"
) else ( 
    xcopy /s/e/y/i/r/f "$(SolutionDir)Dlls\Elmah-x64" "$(TargetDir)"
)

вторник, 7 июня 2011 г.

C# Nullable DateTime

Последнее время, когда я учился получать данные из бд, меня часто мучал вопрос, почему извлеченная нулевая дата (в базе == NULL) таковой не является? И почему я не могу написать DateTime dt = null? Надо было проявить чуть интереса.


[SerializableAttribute]
public struct DateTime : IComparable, IFormattable, 
 IConvertible, ISerializable, IComparable<DateTime>, 
 IEquatable<DateTime>

Да, DateTime это, оказывается, структура. А структура это value type и не может быть null, ответ на поверхности.
А для проверки некорректности даты следует использовать

dt == DateTime.MinValue
// DateTime.MinValue = 00:00:00.0000000 January 01, 0001

Также, конечно, можно использовать Nullable<DateTime> = "DateTime?".

Маленькая статейка по теме:
Nullable DateTime

четверг, 2 июня 2011 г.

Заметка от передаче файлов в ответе сайта

Замечали ли вы, что браузер ссылки на некоторые файлы пытается сразу открыть, а некоторые — сохранить? Например, pdf-файлы в браузере Chrome.
Вот ссылка, которая открывается в браузере.
Пример загружаемого файл, к сожалению, с налета привести сейчас не могу (если есть, приводите в комментах!), но разница заключается в одном ключе заголовка ответа (Response Header):
  1. Content-Disposition:
    attachment; filename="file.ext"

Описание ключа в статье на вики.
Так же там периодически мелькает информация о сервере и на чем реализована страница, что тоже явилось для меня небольшим, но открытием:
  1. Server:
    Microsoft-IIS/7.5
  2. X-AspNet-Version:
    2.0.50727
  3. X-Powered-By:
    ASP.NET