MSBuild, как передать параметр, чтобы установить значение свойства?

Предположим, у меня есть 3 проекта cs в решении, и я импортирую этот файл Common.props во все 3 файла csproj.

Вот мой файл Common.props, который будет находиться на уровне решения, каждый проект в моем решении будет импортировать этот файл Common.props, я пытаюсь выяснить, как я могу установить свойство Externals на сервере сборки через командную строку, которая будет вызовите специальный файл CI.Build, который также будет находиться на уровне решения. MSBuild довольно нов для меня, я делал все возможное, чтобы найти ответ на этот вопрос, но ничего, что я нашел, не имело для меня 100% смысла.

   <?xml version="1.0" encoding="utf-8"?>
    <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
        <PropertyGroup>
           <Externals Condition="'$(Externals)'==''">..\..\..\Externals\</Externals>
           </PropertyGroup>
           <ItemGroup>
               <ThirdPartyLibs Include="$(OutputPath)\*.dll" />
           </ItemGroup>
           <Target Name="BeforeResolveReferences">
           <PropertyGroup>
               <AssemblySearchPaths>$(Externals);$(AssemblySearchPaths)</AssemblySearchPaths>
           </PropertyGroup>
           </Target>
               <Target Name="BeforeBuild">
               <Message Text="$(Externals)"></Message>
           </Target>
           <Target Name="AfterBuild">
               <Message Text="After Build______"></Message>
           </Target>
           <Target Name="CleanDlls" AfterTargets="Clean">
               <Delete Files="@(ThirdPartyLibs)"></Delete>
           </Target>
    </Project>

1 ответ

Решение

Запустите msBuild с параметром /p для передачи аргумента:

MSBuild.exe /p:Externals="c:\Temp"

Ссылка на командную строку MsBuild

Другие вопросы по тегам