TFS工作流MSBuild活动项目位置

时间:2012-11-17 03:43:39

标签: tfs msbuild tfs2010 workflow team-build

我喜欢BuildProcessTemplates和Custom Assemblies文件夹如何自动将构建脚本同步到构建控制器/代理程序。我在C#中编写了自定义活动,并了解如何添加导入,以便我可以使用这些程序集中的类型。

我也看到了如何通过MSBuild活动使用MSBuild文件。我还注意到,如果我将msbuild文件(比如foo.proj)检查到源代码管理中的CustomAssemblies文件夹中,那么msbuild会显示在我的自定义程序集旁边的服务器上的临时目录结构中。

所以这是我的问题?如何在MSBuild活动的Project属性中引用foo.proj的位置?我一直在寻找变量等,但似乎无法把它放在一起。

1 个答案:

答案 0 :(得分:0)

我找到了一种使用自定义代码活动的方法。基本上我将它作为变量初始化模式连接到工作流程中,然后在我的其他活动中使用它。但是如果可能的话,我宁愿这样做而不需要自定义组件。

using System.IO;
using System.Activities;
using System.Reflection;
using Microsoft.TeamFoundation.Build.Client;

namespace BuildTasks.Activities
{

    [BuildActivity(HostEnvironmentOption.All)]
    public sealed class FindCustomAssembliesDirectory : CodeActivity
    {
        public OutArgument<string> CustomAssembliesDirectory { get; set; }

        protected override void Execute(CodeActivityContext context)
        {
            context.SetValue(CustomAssembliesDirectory, new FileInfo(Assembly.GetExecutingAssembly().Location).Directory.FullName);
        }
    }
}