2014-12-02 73 views
2

假设我在解决方案中有3个cs项目,并且我将这个Common.props文件导入到所有3个csproj文件中。MSBuild如何传递参数来设置属性值?

这是我的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> 
+0

你尝试过谷歌搜索[C#传递参数的MSBuild(https://www.google。 com/search?q = c%23 +传递参数+ to + MSBuild&oq = c%23 +传递参数+ to + MSBuild&aqs = chrome..69i57j69i58.342j0j4&sourceid = chrome&es_sm = 122&ie = UTF-8) – MethodMan 2014-12-02 23:29:31

+0

是的,我很困惑,不确定是否需要将csproj文件导入生成文件,然后设置此Externals属性或i f我可以使用属性开关/ p设置Externals属性命令行?就像我之前说过的那样,我读的东西对我来说是100%的感觉。 – OutOFTouch 2014-12-03 00:02:55

+0

你可以用/ p选项启动msBuild来传递参数:MSBuild.exe/p:Externals =“c:\ Temp” – Troopers 2014-12-03 10:25:20

回答