Xaml 如何在TFS构建过程中执行任意代码行?

Xaml 如何在TFS构建过程中执行任意代码行?,xaml,tfs,msbuild,build-process,build-process-template,Xaml,Tfs,Msbuild,Build Process,Build Process Template,我正在TFS服务器中创建自定义流程模板 在此过程中,我希望执行以下命令行,以根据当前MMDD自动修改AssemblyInfo.cs中程序集的修订号: File.WriteAllText(file, Regex.Replace(File.ReadAllText(file), "(?<=\[assembly: AssemblyFileVersion\(""[0-9]*.[0-9]*.[0-9]*.)[0-9]*(?=""\)\])", Function(m) DateTime.Now.ToSt

我正在TFS服务器中创建自定义流程模板

在此过程中,我希望执行以下命令行,以根据当前MMDD自动修改AssemblyInfo.cs中程序集的修订号:

File.WriteAllText(file, Regex.Replace(File.ReadAllText(file), "(?<=\[assembly: AssemblyFileVersion\(""[0-9]*.[0-9]*.[0-9]*.)[0-9]*(?=""\)\])", Function(m) DateTime.Now.ToString("MMdd")))

File.writealText(File,Regex.Replace(File.ReadAllText(File))(?注意:我通过在System.IO.File.writealText上直接向InvokeMethod添加一个节点来绕过它,并将Regex.Replace调用作为参数之一传递


如果有人可以直接回答原始问题,我将保留该问题。

如您所述,可以使用“InvokeMethod”来执行一行代码

我建议创建一个自定义活动,您可以在其中为其提供参数,例如文件名和文件路径

为了实现这一目标,需要两项主要任务:

  • 包括自定义生成过程模板
  • 创建自定义活动
  • 您可以在当前解决方案中执行此操作,也可以创建一个全新的解决方案来处理自定义活动和流程模板

    包含自定义生成过程模板 无论您选择使用当前的解决方案还是新的解决方案,都必须将流程构建模板包含在单独的项目中

    该项目需要是一个“活动库”,可在“已安装”(VS 2013)下找到:

    右键单击解决方案->添加->新建项目->Visual C#->工作流

    在此项目中,您可以通过将其添加为现有项并使其成为链接来添加您一直在使用的流程模板。这可以通过按“添加”按钮上的小箭头来完成

    如果包含这些内容,则需要包含多个参考资料,可在此处找到[1]

    创建自定义活动 至于构建过程模板,所有自定义活动都需要一个要构建的项目。这是为了确保在使用它们时,它只是引用项目或包含dll

    这个项目还需要是一个活动库,在这里创建活动

    活动是代码活动,可通过以下方式创建:

    右键单击项目->添加->新建项…->Visual C#项->工作流->编码活动

    同样,这个项目需要几个参考文献来构建,可以在这里找到[1]

    参考资料: 有关更多信息和想法,请查看以下内容:


    [1] :

    您不应该自己创建此版本。您应该使用TFS社区构建工具中内置的precreate TfsVersion活动


    此工具将完成所有繁重的工作,并得到Visual Studio ALM Ranger和MVP的支持。

    您使用的是什么版本的TFS?感谢PS Christian,我认为这是一种可行的替代方法,因此将此标记为解决方案。我实际上找到了“InvokeMethod”“简单得多,因为它不涉及创建新的类或项目。