Я пытаюсь настроить свою среду для разработки, отладки и развертывания гаджетов Windows Desktop. Я столкнулся с некоторыми препятствиями в своем проекте, когда не могу запустить сборку на своем гаджете, когда для конфигурации задано значение «Отладка». Если для конфигурации задано «Выпуск», сборка выполняет следующие пользовательские задачи:
- Копирование содержимого гаджета в отдельную папку.
- Сокращение / обфускация файлов JavaScript, удаление комментариев и пробелов.
- Упакуйте файлы в CAB-файл.
- Подпишите CAB-файл цифровым сертификатом.
Это работает просто отлично, в моей конфигурации "Debug" определены следующие задачи
- Скопировать папку гаджета в
AppData\Local\Microsoft\Windows Sidebar\Gadgets\
.
- Запустите гаджет с помощью интерфейса IDesktopGadget.
Если я скопирую эти две задачи в конфигурацию «Выпуск», они будут работать нормально - никаких проблем. Я попытался создать отдельную конфигурацию под названием «Test», скопированную из конфигурации «Release».
Если я пытаюсь создать какую-либо конфигурацию, отличную от «Release», я получаю мгновенное сообщение о том, что «Build успешно», но никакие задачи не выполнялись вообще.
РЕДАКТИРОВАТЬ: Я начал награду, потому что у меня все еще та же проблема с VS 2010 RC, и это очень расстраивает.
ДОПОЛНИТЕЛЬНОЕ РЕДАКТИРОВАНИЕ:
Благодаря Джону я смог отладить процесс сборки. Это привело меня к пониманию того, что элемент <Target>
с условием отладки полностью игнорируется (даже не обрабатывается). Когда я поменял положение моих <Target>
элементов, это сработало:
<Target Name="Build" Condition="'$(Configuration)' == 'Release'">
<!--
<Obfuscate PathToJasob="C:\Program Files (x86)\Jasob.com\Jasob 3.5" Path="$(GadgetFolder)" Output="$(GadgetName)_obf" log="jasob_log.txt" />
-->
<BuildGadget BuildFormat="CAB" Path="$(GadgetFolder)" Target="$(GadgetName).gadget" />
<SignGadget CertName="Cert1" TimestampURL="http://timestamp.comodoca.com/authenticode" Target="$(GadgetName).gadget" />
</Target>
<Target Name="Build" Condition="'$(Configuration)' == 'Debug'">
<CopyToGadgets GadgetFolder="$(GadgetFolder)" GadgetName="$(GadgetName)" />
<RunGadget GadgetName="$(GadgetName)" />
</Target>
Похоже, что второй элемент <Target Name="Build">
переопределяет первый, несмотря на наличие атрибута Condition
. Что я могу сделать?