Visual Studio 2010 Beta 2, IncrediBuild, cl.exe

После установки Beta 2 возникла проблема при компиляции C++/CLI проекта с помощью IncrediBuild’a в Visual Studio 2008.

Причем файлы собираемые локально компилируются нормально, а файлы на других машинах выдают сообщения:

file.cpp(12) : warning C4651: ‘/D__CLR_VER=20050727’ specified for precompiled header but not for current compile
file.cpp(12) : fatal error C1108: unable to find DLL: ‘alink.dll’

Немного дизассемблировав c1xx.dll выяснили, что cl.exe кидает ошибку c1108 связанную с alink при попытке загрузить эту dll через функцию LoadLibraryShim. Т.к. никто толком не знает как работает IncrediBuild то просто предположили, что при запуске на удалённой машине cl.exe вызовы функций обращений к реестру перехватываются и возвращаются данные с локальной машины. Предположение скорее всего не верное, но оно натолкнуло на мысль, что есть несоответствие версий между mscoree.dll на локальной и удалённой машинах.

В итоге попробовали на удалённой машине заменить mscoree.dll на 4-ую версию и всё заработало! Но этот вариант не очень устраивал, лучше тогда .Net Framework поставить.

Поковырявшись ещё немного решили запускать cl.exe в “режиме совместимости” (не знаю как это правильно называется в .Net), для этого добавили в реестр следующую запись:

reg add HKLMSOFTWAREWow6432NodeMicrosoft.NETFrameworkPolicyAppPatchv4.0.21006.00000cl.exe{DFA3BDF6-32E8-4fcf-833F-9EE0E63040CB} /v "Target Version" /t reg_sz /d "v2.0.50727"

это WOW64 режима для 64-ёх битной ОСи, для 32-ух битной ОСи или для x64 подойдёт эта команда

reg add HKLMSOFTWAREMicrosoft.NETFrameworkPolicyAppPatchv4.0.21006.00000cl.exe{DFA3BDF6-32E8-4fcf-833F-9EE0E63040CB} /v "Target Version" /t reg_sz /d "v2.0.50727"

После выполнения этих команд всё завелось. По хорошему нужно указать ещё “Maximum File Version” и “Minimum File Version”, но это уже по желанию.

PS. моя любимая утилита procmon в этот раз не помогла 😦

Непонятки с Live Messenger

Коли тут так любят WLM может кто-нибудь сказать как попасть в свой профиль/space из WLM?
В старых версиях это было (на тулбаре кнопочка была), сейчас нет. Или я просто не нашел?

Сообщение «неправильный ключ» при работе с API Яндекс.Карт

Друг попросил помочь разобраться почему у него при работе с API Яндекс.Карт время от времени выскакивает сообщение
—————————
Message from webpage
—————————
неправильный ключ
—————————
OK  
—————————
и вместо карты белый квадрат и куча ошибок в JS. Причем это только в IE.
 
Стали смотреть и обнаружили, что когда в url есть русские буквы, то IE в referer, при вызове http://api-maps.yandex.ru/1.0/index.xml?key=, передаёт юникодные символы, а яндекс зачем-то смотрит не только домен, но и остальную часть referer’а и, видя юникод, отказывается работать.
Исправить очень просто: а) не использовать русские буквы в url; б)передавать русские буквы в URL encoded виде; c) придумать ещё что-нибудь.
 

Я хренею от Windows Live Messenger

Под семеркой поставил subj и смотрю что-то он в трей не хочет убираться.
Я сначала не понял, думал где галочка какая есть, ан нет, просто MS решила что человек не обязательно запинит это убожество, а так месенджер будет висеть как-будто запиненый.
В итоге помог режим совместимости с вистой.
Но это маразм какой-то.
Я вообще не понимаю почему не разгонят команду лайва куда подальше. Их поделки мало того, что неюзабельные, так ещё и глючат безбожно.
 
PS. Всё деградирует. Аська была нормальной пару лет назад (клиент квип), сейчас постоянно глючит. Live никогда нормальным не был, но к 8-ке намечались какие-то подвижки по удобности, но в 9-ке всё испортили.
 
 

Windows Live Messenger 2009 Beta на Windows Server 2008 (2003)

Недавно стала доступна бета версия Windows Live, но инстолятор, как обычно, для установки требует Windows XP или Windows Vista.

degustator в комментарии подсказал где можно взять все компоненты для Windows Live Wave 3 Beta в виде cab файлов внутри которых msi файл готовый к установке.

Для установки Messenger на Windows Server написал небольшую программку:

 

http://cid-8ca28e6a05580d3e.skydrive.live.com/embedrowdetail.aspx/Common/WindowsLiveBeta/wlw3|_wlm|_install.cs

По аналогии можно ставить и другие Live программы. Если кому-нибудь нужны будут смещения и размеры других компонентов (Mail, Writer, etc) — пишите в комментариях.

SQL 2008 таки вышел

Собственно сабж.

А по слухам через неделю выйдет VS 2008 SP1.

*.sln.cache файлы и флаги MSBUILD

Кто хоть иногда собирает файлы solution (.sln) через msbuild v3.5 наверняка замечал появляющиеся рядом файлы solution_name.sln.cache. Лично мне они мешали, но я смирился с ними как с неизбежным злом.
А сейчас, пока изучал, как реализуется анализ зависимостей в MSBUILD, наткнулся на следующий код:
private static bool IsSolutionCacheEnabled()
{
    return string.IsNullOrEmpty(Environment.GetEnvironmentVariable("MSBuildUseNoSolutionCache"));
}
Попробовал задать эту переменную среды (set MSBuildUseNoSolutionCache=yes) и, о чудо, cache файл перестал создаваться.

Стало интересно, какие ещё переменные среды использует MSBUILD, получился такой вот список (скорее всего не полный):
MSBUILDDEBUG ("1" — включено, любое значение — выключено)
MSBuildForwardPropertiesFromChild (любая не пустая строка — включено, пустая строка — выключено)
MSBUILDPROFILE ("1" — включено, любое значение — выключено)
MSBUILDENGINEPROXYINITIALLEASETIME (любое число — включено, любое другое значение — выключено)
MSBUILDENGINEPROXYLEASEEXTENSIONTIME (любое число — включено, любое другое значение — выключено)
MSBUILDNODESHUTDOWNTIMEOUT (любое число — включено, любое другое значение — выключено)
MSBUILDLOADBALANCE ("0" — выключено, любое значение — включено)
MSBuildEmitSolution (любая не пустая строка — включено, пустая строка — выключено)
MSBuildUseNoSolutionCache (любая не пустая строка — включено, пустая строка — выключено)
MSBUILDREQUESTBATCHSIZE (любое число — включено, любое другое значение — выключено)
MSBuildLaunchDebuggerOnFatalError (любая не пустая строка — включено, пустая строка — выключено)

 

Tags: .

P/Invoke Interop Assistant

Совсем короткий пост 🙂
 
Выложили на CodePlex замечательную утилитку P/Invoke Interop Assistant
Описание утилиты можо найти в январьском номере MSDN Magazine http://msdn.microsoft.com/ru-ru/magazine/cc164193.aspx

Немного новостей

Давненько не писал 🙂

А тем временем вышло сразу несколько продуктов, которые меня интересуют.

Наконец-то зарелизили Subversion 1.5. Самые главные фичи для меня – это Merge tracking (отслеживание слияний) и Relative URLs (относительные пути в externals). Бинарники под винду будут только 24-го, но кто не хочет ждать – может и сам скомпилить :). Смотреть и брать тут. Черепашка (TortoiseSVN) под новый сервер с опозданием, но тоже скоро выйдет, пока доступны релиз кандидаты. Брать тут.

В мае Microsoft выпустила 4-ую версию Enterprise Library, а также (как в составе EL, так и отдельно) Unity Application Block – легковесную реализацию DI контейнера. Если будет возможность – постараюсь пару постов о Unity написать.

В июне вышла VSTS 2008 Database Edition GDR June CTP. По описанию очень вкусный CTP, попробовать ещё не успел, мешает только до сих пор не установленный SP1 beta для VS 2008. Изменений очень много, приводить их тут не буду, дам ссылку на блог.

В июне же вышла бета версия Microsoft Network Monitor 3.2. Пишут, что увеличена скорость, но самое главное теперь видно какой трафик к какому процессу относится и теперь гораздо удобней выбирать декодирование пакета (раньше выбор был через меню в котором очень много пунктов, теперь же сделали в виде отдельного окна с деревом). Посмотреть и скачать можно тут.

image

 

Также очень порадовал Владимир Решетников набором своих этюдов:
[C# 3.0, Этюд] Add Reference
[Этюд, C# 3.0] Unreachable code
[Этюд, C# 3.0] Generic constraint
Просто любопытный эффект

Ну и напоследок не могу не отметить июньский номер MSDN Magazine, не так часто бывают такие удачные номера.

WinDBG 6.9.3.113 Released

Обновился WinDBG до версии 6.9.3.113
What’s New

This release of Debugging Tools for Windows contains many bug fixes and new
enhancements. The debuggers are stable and more reliable than previous
releases and we recommend that you upgrade to this version.

Here’s a list of the key changes in WinDbg 6.9:

    * Fix kd to function properly when debugging 256 processor machine.
    * Fix windbg window dragging performance problems when running under AERO
      on Vista.
    * Alert the user when a debug transport is already opened by another
      instance of the debugger.
    * Only attempt driver install after opening the transport fails with file
      not found.
    * Add /LARGEADDRESSAWARE to debugger executables (cdb/kd/ntsd/windbg).
    * Update vmdemux tool
    * Fix pdbcopy.exe tool
    * "dt" would display enumerant symbolic names for enumeration-typed bit-
      field members.
    * Make "dt" member field match case-insensitive.
    * Support wildcard module name in "dt" command. For example, "dt
      adv!*RegQuery*".
    * "dt/dv" would output more information indicating that this is an empty
      string (the default display "") or this is memory read failure (new output
      "— memory read error at address …").
    * "sx? ud" commands can now use an image name (for example, ntdll.dll) as
      well as a module name (ntdll).
    * Fix ".dbgdbg" command failure when debugger is installed in a directory
      that contains spaces (for example, "c:Program FilesDebuggers").
    * Fix "z" command loop counter reset problem.
    * Debugger extension would be loaded using LOAD_WITH_ALTERED_SEARCH_PATH
      so that dependent binaries could be loaded from the same directory where
      loaded extension resides (and the directory is not part of search path).
    * "!defwrites" (in kdexts.dll) will not query nt!MmThrottleTop and
      nt!MmThrottleBottom values in Windows Vista.
    * Fix for "!sysinfo cpuinfo".
    * Fix for "!sysinfo gbl" infinite loop problem.
    * Fix for DisplayFlags() has output string buffer overrun when using
      "!handle" (in ntsdexts.dll).
    * Fix for "!gflags" command.
    * Fix so that "fltkd" and "boot" debugger extensions run on pre-Win7 OS.
    * Fix Symstore/SymChk improved detection for resource-only binaries
    * Continued on-going improvements to !analyze

Tags: .