c# - MSBuild如何传递一个参数来设置一个属性值?

标签 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>

最佳答案

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

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

MsBuild command line reference

关于c# - MSBuild如何传递一个参数来设置一个属性值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27260877/

相关文章:

C# for 组合框中的循环

c# - ServiceStack.OrmLite - 我可以做类似 Db.Select<Foo, Bar>() 的事情吗?

msbuild - 在MSBuild中找出当前操作系统的 "Bit"

msbuild - 如何在 MSBuild 中创建新属性并在 WIX 中引用它

visual-studio - 使用 WriteCodeFragment MSBuild 任务

c# - 合并多个列表,每个列表的可变长度为 "popping"个元素

c# - 如何以匿名方式破解 WinDbg?

c# - Nuget [exec] 警告 : Unable to extract metadata from *. dll

c++ - 64 位 VS2013 构建的 C++ 认为从命令行构建切换到开发人员工作室时代码已过时

msbuild - MSBuild托管与非托管属性