2011-05-10 57 views
8

我有一個導入的MSBuild項目(appconfig.transformation.targets),它定義了一些任務並將它們放入BuildDependsOn屬性中。我放在這個文件中的頂層文件夾的解決方案(項目\ LibrariesSolution \ appconfig.transformation.targets):MSBuild未從導入的項目運行BuildDependsOn任務

<PropertyGroup> 
    <BuildDependsOn> 
    TransformWebConfig; 
    OverrideAppConfigWithTargetPath; 
    $(BuildDependsOn); 
    CopyTransformedConfig 
    </BuildDependsOn> 
</PropertyGroup> 
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets" /> 

我導入子文件夾中的解決方案中的每個文件的csproj這個項目。因此,項目\ LibrariesSolution \ PROJECT1 \ Project1.csproj有這樣的事情:

<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"/> 
    <Import Project="..\appconfig.transformation.targets" /> 
    ... the rest of the csproj stuff ... 

我啓動構建,像這樣:

cd LibrariesSolution 
c:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe /t:Clean /p:Configuration=Release Project1\Project1.csproj 
c:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe /t:Build /p:Configuration=Release Project1\Project1.csproj 

但BuildDependsOn列出的目標似乎並沒有被調用。當然輸出結果太冗長了,不能顯示在這裏,但是「TransformWebConfig」不會出現在輸出的任何地方。沒有顯示錯誤。什麼可能是錯的?我應該怎麼做才能進一步解決問題?

回答

14

您有進口訂單問題。您正在導入定義屬性BuildDependsOn的文件(appconfig.transformation.targets)。稍後在項目文件中,將導入Microsoft目標,這會重新定義BuildDependsOn並清除所做的更改,因爲它們的定義不包括BuildDependsOn中的任何現有值。

BuildDependsOn在Microsoft.Common.targets中定義,它由Microsoft.CSharp.targets爲C#項目導入。您的導入應該在導入Microsoft.CSharp.targets之後進行。

+0

謝謝。進口訂單問題。 – 2011-05-10 21:28:49