MSBuild如何通过参数设置属性值?

Out*_*uch 3 c# msbuild msbuild-propertygroup

假设我在解决方案中有3个CS项目,并且在所有3个csproj文件中都导入了Common.props文件。

这是我的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>
Run Code Online (Sandbox Code Playgroud)

Tro*_*ers 8

使用/ p选项启动msBuild以传递参数:

MSBuild.exe /p:Externals="c:\Temp"
Run Code Online (Sandbox Code Playgroud)

MsBuild命令行参考