Переменные среды теряются между проектами MSBuild - PullRequest
1 голос
/ 20 мая 2010

У меня есть решение .NET, содержащее следующие проекты:

  • веб-приложение (WAP)
  • веб-развертывание (WDP, .wdproj)
  • настройка wix (WIX, .wixproj)

В WDP я использовал пользовательское задание MSBuild (SetEnvVar), чтобы установить некоторые env. переменные для дальнейшего использования в процессе сборки. После установки я могу использовать их без проблем. в WDP, но в WIX они пусты / не определены. Странно то, что когда я ссылаюсь на эти env. vars в файлах WIX (используя свойства в .wxs или preproc vars в .wxi) я получаю значения, как и ожидалось.

У вас есть идеи, почему окр. переменные теряются / не определены в .wixproj?

Кстати, процесс сборки (решения) запускается из VS 2010.

Обновление

Это в основном мой код задачи:

Environment.SetEnvironmentVariable(this.Variable, this.Value);

Является ли решение MSBuild сборкой не одного процесса?

Будет ли MSBuild создавать новый процесс для каждого проекта в решении?

Ответы [ 2 ]

1 голос
/ 20 мая 2010

Возможно ли, что ваша задача SetEnvVar устанавливает переменные среды для одного процесса, а не глобально (что должно быть сделано для безопасности, кстати)? В этом случае вполне вероятно, что WIX штуковина каким-то образом запускается как другой процесс, поэтому она имеет собственную частную копию текущего набора глобальной среды.

0 голосов
/ 21 мая 2010

Вот важные части файлов проекта:

WDP (.wdproj)

<Target Name="AfterBuild">
    <SetEnvVar Variable="MAJOR" Value="$(MajorNumber)" />
    <SetEnvVar Variable="MINOR" Value="$(MinorNumber)" />
    <SetEnvVar Variable="REVISION" Value="$(RevisionNumber)" />
    <SetEnvVar Variable="BUILD" Value="$(BuildNumber)" />        
</Target>

WIX (.wixproj)

<Target Name="AfterBuild">
    <Message Text="Major: $(MAJOR) Minor: $(MINOR) Revision: $(REVISION)" />
    <Move SourceFiles=".\bin\$(Configuration)\$(OutputName).msi" DestinationFiles=".\bin\$(Configuration)\Product_$(MAJOR).$(MINOR).$(REVISION).msi" />        
</Target>

Вывод журнала задачи «Сообщение»: «Major: Minor: Revision:» следовательно Переменные MAJOR, MINOR и REVISION недоступны для проекта WIX, поэтому MSI-пакет имеет имя Product _... msi .

Порядок сборки проекта, конечно, WAP -> WDP -> WIX.

...