Событие после сборки Visual Studio 2010: прохождение текущего FlavorToBuild - PullRequest
3 голосов
/ 27 марта 2012

В настоящее время я работаю над проектом по перепрофилированию, часть которого включает несколько десятков веб-сайтов, все из которых используют общий заголовок. Несколько из этих сайтов жили на одном компьютере, поэтому была установлена ​​символическая ссылка, чтобы они могли ссылаться на один и тот же контент. Некоторые другие сайты были внешними, поэтому был установлен и использовался общий «includes.company.com».

Перейдите к сегодняшнему дню, и я пытаюсь настроить сайт "includes.company.com" в Visual Studio. Содержание достаточно простое. Я свел его к одному HTML-файлу и одному CSS-файлу вместе со всеми необходимыми изображениями.

То, что я сейчас пытаюсь выполнить, основано на текущей конфигурации сборки, чтобы вывести HTML и CSS с соответствующими ссылками, на которые можно ссылаться с внешних сайтов.

У меня сейчас событие после сборки, которое выглядит так ...

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -file "$(MSBuildProjectDirectory)\pbuild.ps1" "$(Configuration)" $(MSBuildProjectDirectory)

где pbuild.ps1 выглядит как

param ([string]$config, [string]$target)

If ($config -eq "Debug")
{
    (get-content $target\common\css\stylesheet.min.css) -replace '{SERVER}', 'http://dev.includes.company.com' | set-content $target\Builds\$config\common\css\stylesheet.min.css
    (get-content $target\header.html) -replace '{SERVER}', 'http://dev.includes.company.com' | set-content $target\Builds\$config\header.html
}

If ($config -eq "QA")
{
    (get-content $target\common\css\stylesheet.min.css) -replace '{SERVER}', 'http://qa.includes.company.com' | set-content $target\Builds\$config\common\css\stylesheet.min.css
    (get-content $target\header.html) -replace '{SERVER}', 'http://qa.includes.company.com' | set-content $target\Builds\$config\header.html
}

If ($config -eq "Release")
{
    (get-content $target\common\css\stylesheet.min.css) -replace '{SERVER}', 'http://includes.company.com' | set-content  $target\Builds\$config\common\css\stylesheet.min.css
    (get-content $target\header.html) -replace '{SERVER}', 'http://includes.company.com' | set-content $target\Builds\$config\header.html
}

Это прекрасно работает для Debug и Release, но не для QA. Как я выяснил, переменная $ Configuration, кажется, всегда содержит только «Debug» или «Release», а не саму активную конфигурацию, которую я ищу.

FlavorToBuild показался многообещающим, но я чертовски потратил время на то, чтобы вытащить его в переменную, которую я могу использовать.

Есть ли переменная, которая настроена, чтобы дать мне то, что я ищу, имя активной конфигурации сборки? Есть ли способ назначить переменную в файле проекта, которую я затем смогу вставить в событие Post-Build? Это мой первый настоящий набег в этот мир, поэтому любая помощь или руководство по достижению этой цели высоко ценится.

1 Ответ

0 голосов
/ 27 марта 2012

Кажется, я решил эту проблему, добавив свойство или два в файл проекта для каждой сборки.

У меня получилось что-то вроде следующего:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -file "$(MSBuildProjectDirectory)\pbuild.ps1" $(PowershellBuildEnv) $(MSBuildProjectDirectory) $(TargetSite)

с pbuild.ps1 теперь урезан до:

param ([string]$config, [string]$target, [string]$replaceWith)

(get-content $target\common\css\stylesheet.min.css) -replace '{SERVER}', $replaceWith | set-content $target\Builds\$config\common\css\stylesheet.min.css
(get-content $target\header.html) -replace '{SERVER}', $replaceWith | set-content $target\Builds\$config\header.html

В файле проекта я определил как $ ReplaceWith, так и $ PowershellBuildEnv, как мне показалось, подходящим для каждой конфигурации сборки:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <PowershellBuildEnv>Debug</PowershellBuildEnv>
    <TargetSite>http://dev.includes.company.com</TargetSite>

Так что, похоже, работает так, как я сейчас ищу. Определенно был опыт обучения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...