我喜欢BuildProcessTemplates和Custom Assemblies文件夹如何自动将构建脚本同步到构建控制器/代理程序。我在C#中编写了自定义活动,并了解如何添加导入,以便我可以使用这些程序集中的类型。
我也看到了如何通过MSBuild活动使用MSBuild文件。我还注意到,如果我将msbuild文件(比如foo.proj)检查到源代码管理中的CustomAssemblies文件夹中,那么msbuild会显示在我的自定义程序集旁边的服务器上的临时目录结构中。
所以这是我的问题?如何在MSBuild活动的Project属性中引用foo.proj的位置?我一直在寻找变量等,但似乎无法把它放在一起。
答案 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);
}
}
}