Я, вероятно, здесь упускаю что-то простое, потому что это, похоже, не работает так, как я ожидаю.Я не являюсь действующим парнем по дням.
У меня есть плагин tfs 2010, который отслеживает события смены билетов и фильтрует изменения WIT в желаемых билетах.Все это основано на http://geekswithblogs.net/jakob/archive/2010/10/27/devleoping-and-debugging-server-side-event-handlers-in-tfs-2010.aspx
Я вытаскиваю все необходимые переменные в плагине, и мне нужно передать это движку сборки, который фактически будет толкать сборку.Больше всего меня огорчает то, что параметры помещаются в виде строки xaml или «словаря и сериализуют его в строку».Теперь есть библиотека Microsoft.TeamFoundation.Build.Workflow, которая выполняет некоторую обработку этого, но, похоже, для .net 4, а сервер tfs работает в .net 2 и не может связать его.Этот метод обсуждается в широко связанном http://blogs.msdn.com/b/jpricket/archive/2010/03/25/tfs2010-queuing-a-build-from-code-with-custom-process-parameter-values.aspx, но он просто использует метод DeserialzeProcessParameters, к которому у меня нет доступа.
Я просто пытаюсь обновить несколько значений, и я могу сделать этов паре строк PowerShell, поэтому я думал, что смогу решить ее самостоятельно, но у меня возникли проблемы.
Параметры Buildrequest.parameter по умолчанию для запроса на сборку выглядят следующим образом (w / the / r /n преобразуется в новые строки. Его можно проанализировать как innerXml XmlDocument).
Если у меня есть документ xml, как показано ниже, как в c # я могу адресовать и обновлять значения, скажем, RestoreDatabase?
<Dictionary x:TypeArguments="x:String, x:Object" xmlns="clr-namespace:System.Collections.Generic;assembly=mscorlib" xmlns:mtbw="clr-namespace:Microsoft.TeamFoundation.Build.Workflow;assembly=Microsoft.TeamFoundation.Build.Workflow" xmlns:mtbwa="clr-namespace:Microsoft.TeamFoundation.Build.Workflow.Activities;assembly=Microsoft.TeamFoundation.Build.Workflow" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<mtbwa:BuildSettings x:Key="BuildSettings" ProjectsToBuild="$/EJTest/TFSServerEventHandler/TFSServerEventHandler.sln">
<mtbwa:BuildSettings.PlatformConfigurations>
<mtbwa:PlatformConfigurationList Capacity="0" />
</mtbwa:BuildSettings.PlatformConfigurations>
</mtbwa:BuildSettings>
<mtbwa:TestSpecList x:Key="TestSpecs" Capacity="0" />
<mtbwa:CodeAnalysisOption x:Key="RunCodeAnalysis">Never</mtbwa:CodeAnalysisOption>
<x:Boolean x:Key="AssociateChangesetsAndWorkItems">False</x:Boolean>
<x:Boolean x:Key="CreateWorkItem">False</x:Boolean>
<x:Boolean x:Key="DropBuild">False</x:Boolean>
<x:Boolean x:Key="PerformTestImpactAnalysis">False</x:Boolean>
<x:Boolean x:Key="CreateLabel">False</x:Boolean>
<x:Boolean x:Key="DisableTests">True</x:Boolean>
<mtbw:BuildVerbosity x:Key="Verbosity">Detailed</mtbw:BuildVerbosity>
<x:String x:Key="BuildNumber">4.4.2.29</x:String>
<x:String x:Key="BackupDatabase">yes</x:String>
<x:String x:Key="RestoreDatabase">Yes</x:String>
<x:String x:Key="OverwriteBackup">Yes</x:String>
<x:String x:Key="UpgradeSoftware">No</x:String>
<x:String x:Key="DeploymentTicket">654</x:String>
</Dictionary>
Значения x: string являютсяЯ хочу обновить и изменить.
Для чего это стоит, версия PS
[xml]$a = Get-Content .\test.xml
$b = $a.Dictionary.string | where {$_.key -eq "CustomerData"}
$b."#text" = 'No'
Спасибо за ваше время.