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: .
Отслеживать

Get every new post delivered to your Inbox.