2013-05-07 13 views
0

有沒有辦法在msbuild中使用Import指令,使得Project屬性的值是一個變量,並且該變量是在目標中定義的?是否有可能導入一個msbuild目標,其位置是在目標中定義的屬性?

就目前而言,在我看來,Import指令是在任何目標之前評估的。

例如:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 

    <PropertyGroup> 
     <PublishDir>none</PublishDir> 
     <AutomatedTestsTarget>none</AutomatedTestsTarget> 
    </PropertyGroup> 

    <Target Name="GetPublishDir"> 
     ... 
    </Target> 

    <Target Name="BeforeCompile" DependsOnTargets="GetPublishDir"> 
     <PropertyGroup> 
      <AutomatedTestsTarget>$(PublishDir)\automated_tests.build</AutomatedTestsTarget> 
     </PropertyGroup> 
    </Target> 

    <Import Project="$(AutomatedTestsTarget)"/> 

</Project> 

Frankensolution

快速的解決方案(如根據註釋),兩個MSBuild的電話,首先寫入一個文件。其次做進口這種方式(通過讀取文件的路徑):在「評估階段」

<PropertyGroup> 
    <AppRootDir>$([System.IO.File]::ReadAllText($(MSBuildProjectDirectory)\directory.txt))\..\automation\</AppRootDir> 
</PropertyGroup> 
+0

對於它的價值,我解決了這個有兩個MSBuild的電話;首先將包含路徑的文件寫入磁盤。第二次調用讀取文件並以這種方式檢索發佈目錄。 – mlangsworth 2013-05-08 05:00:44

回答

相關問題