2014-12-02 72 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

回答