MSBuild и BuildUri - PullRequest
       8

MSBuild и BuildUri

1 голос
/ 20 апреля 2009

Я пытаюсь добавить BuildStep к цели AfterBuild в MSBuild, и я использую следующее

<Target Name="AfterCompile">    
    <ItemGroup>      
        <TestAssemblies Include="$(OutDir)\DataStoreUnitTests.dll" />   
    </ItemGroup>    

    <BuildStep      
        Name="Run unit Tests"
        TeamFoundationServerUrl="$(TeamFoundationServerUrl)"     
        BuildUri="$(BuildUri)"      
        Message="Running unit tests">      
        <Output TaskParameter="Id" PropertyName="StepId" />    
    </BuildStep>    

    <Gallio      
        Assemblies="@(TestAssemblies)"      
        ReportTypes="html"      
        ReportFileNameFormat="buildreport{0}{1}"      
        ReportOutputDirectory="." />    

    <BuildStep      
        TeamFoundationServerUrl="$(TeamFoundationServerUrl)"      
        BuildUri="$(BuildUri)"      
        Id="$(StepId)"      
        Message="Yay! All tests succeded!"      
        Status="Succeeded" />    
        <OnError ExecuteTargets="MarkBuildStepAsFailed" />  
    </Target>  

    <Target Name="MarkBuildStepAsFailed">    
        <BuildStep      
            TeamFoundationServerUrl="$(TeamFoundationServerUrl)"      
            BuildUri="$(BuildUri)"      
            Id="$(StepId)"      
            Message="Tests have failed. See test report in drop folder for details." 
            Status="Failed" />  
</Target>

И когда я запускаю его в MSBuild, я получаю следующую ошибку:

ошибка MSB4044: задаче «BuildStep» не задано значение для требуемого параметр "BuildUri".

И я не понимаю, почему, кто-нибудь знает?

Ответы [ 2 ]

4 голосов
/ 21 апреля 2009

Вы используете эту цель как часть Team Build (на сервере сборки) или как сборка для настольного компьютера (то есть локально)?

Свойство BuildUri обычно заполняется и передается в сборку агентом сборки, когда он запускает новую сборку команды. В вашем скрипте Uri используется, чтобы сообщить TFS, к какой детали сборки прикрепить шаг сборки. Если вы используете сборку на рабочем столе, то она будет пустой, если вы не передадите свойство в командной строке.

4 голосов
/ 20 апреля 2009

Я думаю, что $(BuildUri) ничего не оценивает. Попробуйте выполнить оператор print для отладки и нацеливания на номер строки, который VS / MSBuild выдает как ошибку.

<Message Text="$(BuildUri)" />

MSBuild может быть запущен из командной строки (я считаю, MSBuild легче работать с этим способом) с помощью следующей команды:

C:\WINDOWS\Microsoft.NET\Framework\%FrameWork_Version%\MSBuild /verbosity:n
%Solution or Project file%

Для установки $(BuildUri):

<Target Name="AfterCompile">    
    <PropertyGroup>
        <BuildUri>Build_Uri_Value</BuildUri >
    </PropertyGroup>

    <ItemGroup>
        ...

Информацию о BuildUri можно найти здесь:

Что такое BuildUri и откуда я могу его получить, когда просто пытаюсь получить какой-то источник?

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