【问题标题】:msbuild custom task failing in TFS with DirectoryNotFoundExceptionmsbuild 自定义任务在 TFS 中失败并出现 DirectoryNotFoundException
【发布时间】:2012-09-04 11:37:55
【问题描述】:

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

本地构建时构建任务运行良好,xml文件按预期显示。

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

“QBBuildTask”任务意外失败。 System.IO.DirectoryNotFoundException:找不到一部分 path 'C:*path to TFS build output for this 解决方案*\86\Release\QueryBuilder.xml'。

请注意,** 是我为减少 SO 错误大小而添加的。

当我的任务尝试写入时,发布文件夹似乎不存在。

我的问题是,如果任务不存在,我应该让任务创建目录,还是我为 TFSBuild 使用了错误的输出路径变量?

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

请问有人有什么想法吗?

马龙

【问题讨论】:

    标签: .net tfs msbuild tfsbuild msbuild-task


    【解决方案1】:

    原来使用 TFSBuild 时 OutputPath 不正确,所以我的 xml 被随机放置在某个地方,现在使用了一个条件属性,使用了正确的 TFSBuild 属性“TeamBuildOutDir”。

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

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

    我想我会留下这个以防万一有人遇到类似问题。

    【讨论】:

    • 您可以尝试使用 $(OutDir) 这对于 VS 和 TFS 都应该是正确的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    • 2015-03-13
    • 1970-01-01
    • 2020-01-28
    • 2021-09-17
    相关资源
    最近更新 更多