msbuild自定义任务在TFS中使用DirectoryNotFoundException失败

时间:2012-09-11 13:57:39

标签: .net tfs msbuild tfsbuild msbuild-task

我一直在努力构建一个自定义构建任务,它读取xml文件,并将内容合并到一个xml文件中并将其写入构建的输出目录,我使用$ {OutputPath)来获取它。 / p>

构建任务在本地构建时工作正常,xml文件按预期显示。

但是,我添加了新的解决方案,因此带有AfterCompile目标的csproj文件被覆盖(我也尝试过AfterBuild),其中包含我们的主TFS构建项目所需的特定自定义任务。 TFS构建现在失败,因为我的自定义任务抛出异常:

  

“QBBuildTask”任务意外失败。   System.IO.DirectoryNotFoundException:找不到部分内容   path'C:* TFS构建输出的路径   溶液* \ 86 \推出\ QueryBuilder.xml”。

请注意**是我的补充,以减少SO的错误大小。

当我的任务尝试写入时,看起来版本文件夹不存在。

我的问题是,如果目录不存在,我是否应该创建目录,或者我是否使用错误的输出路径变量进行TFSBuild?

看起来有点奇怪,它在本地正常工作,即使我在尝试构建之前删除了输出文件夹。

有人有任何想法吗?

马龙

1 个答案:

答案 0 :(得分:0)

使用TFSBuild时输出OutputPath不正确,所以我的xml被放在某处随机,现在使用正确的TFSBuild属性'TeamBuildOutDir'使用条件属性。

<PropertyGroup>
  <OutputPathCond Condition=" '$(TeamBuildOutDir)'=='' ">$(OutputPath)</OutputPathCond>
  <OutputPathCond Condition=" '$(TeamBuildOutDir)'!='' ">$(TeamBuildOutDir)</OutputPathCond>
</PropertyGroup>

现在这意味着它可以在本地和服务器上运行。

以为如果有人遇到类似问题我会留下这个问题。