我正在尝试在VS/TFS2010中配置团队版本。我想MSBuild参数包括以下内容:如何在TFS2010中的MSBuild参数中进行变量替换?
/p:Changeset=BuildDetail.SourceGetVersion
我想MSBuild展开“BuildDetail.SourceGetVersion”。我知道如何通过编辑xaml来做到这一点,但我希望有一种方法可以让它在没有需要的情况下工作。有任何想法吗?
我正在尝试在VS/TFS2010中配置团队版本。我想MSBuild参数包括以下内容:如何在TFS2010中的MSBuild参数中进行变量替换?
/p:Changeset=BuildDetail.SourceGetVersion
我想MSBuild展开“BuildDetail.SourceGetVersion”。我知道如何通过编辑xaml来做到这一点,但我希望有一种方法可以让它在没有需要的情况下工作。有任何想法吗?
您需要执行的任务TFS
<UsingTask
TaskName="Microsoft.TeamFoundation.Build.Tasks.GetBuildProperties"
AssemblyFile="C:\Program Files\Microsoft Team Foundation Server 2010
\Tools\Microsoft.TeamFoundation.Build.ProcessComponents.dll"
/>
<Target Name="MyTarget">
<GetBuildProperties
TeamFoundationServerUrl="$(TeamFoundationServerUrl)"
BuildUri="$(BuildUri)">
<Output TaskParameter="BuildNumber" PropertyName="BuildNumber" />
<Output TaskParameter="SourceGetVersion" PropertyName="SourceGetVersion" />
</GetBuildProperties>
</Target>
我会使用属性来计算向大会的路径,因为它可能会有所不同,由于开发人员的机器上这将是在Visual Studio下安装(在我认为的PrivateAssemblies中)。
由于属性是从目标执行中动态生成的,因此基于此属性的任何操作都必须动态计算。基于$(SourceGetVersion)形成全局静态属性将不起作用。当然,你可以计算它,然后使用MSBuild任务来运行真实的构建,但是这会变得单调乏味,因为你需要传递其他属性。如果你想要更好的东西,那么你最终会在我做的地方重写Xaml,将它传递给MSBuild Action。
我知道你问过关于TFS 2010.
但是,自从TFS 2013有一个非常简单的方法做到这一点!
只需在您的MsBuild中使用TF_BUILD_SOURCEGETVERSION var,它将从TFS Build传递。
请参阅TF_BUILD environment变量仅供参考
您可以在此共享xaml吗? – Mrchief 2012-09-20 16:32:32