2012-09-11 59 views
1

我一直在努力构建一个自定义生成任务,它读取XML文件,并将内容组合到一个XML文件,并写出到生成的输出目录,我使用$ {OutputPath)来获得这个。msbuild自定义任务失败TFS与DirectoryNotFoundException

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

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

“QBBuildTask”任务意外失败。 System.IO.DirectoryNotFoundException:找不到 解决方案* \ 86 \ Release \ QueryBuilder.xml中路径'C:* TFS生成输出路径的一部分。

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

看起来我的任务尝试写入时发布文件夹不存在。

我的问题是,如果我得到任务创建目录,如果它不存在,或者我使用错误的输出路径变量为TFSBuild?

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

任何人有任何想法吗?

马龙

回答

0

原来OutputPath使用TFSBuild时,不正确的,所以我的XML是被放在某处随机的,现在已经用于使用正确的TFSBuild财产“TeamBuildOutDir”有条件的财产。

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

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

以为我会离开这个以防万一任何人有类似的问题。

+0

你可以尝试使用$(OutDir),这对于VS和TFS都应该是正确的 –

相关问题