错误'TF215097:...无法为...'自定义CodeActivity创建未知类型

时间:2010-09-20 17:06:22

标签: xaml tfs workflow-foundation tfs2010 tfsbuild

  

可能重复:
  TFS 2010 Custom Build Activity TF215097 error

我正在尝试创建一个CustomActivity,以便在每次成功构建后运行。

我已经按照几个教程的确切步骤进行了操作

  1. http://blogs.blackmarble.co.uk/blogs/rfennell/archive/2010/03/08/lessons-learnt-building-a-custom-activity-to-run-typemock-isolator-in-vs2010-team-build.aspx

  2. http://www.ewaldhofman.nl/post/2010/04/29/Customize-Team-Build-2010-e28093-Part-4-Create-your-own-activity.aspx

  3. http://www.dotnetcurry.com/ShowArticle.aspx?ID=522&AspxAutoDetectCookieSupport=1

  4. 所有这些都导致我得到相同的结果 - 几秒钟后构建失败并出现此错误:

    TF215097: An error occurred while initializing a build for build definition 
    \MyCompany\Dev - Client: Cannot create unknown type '{clr-
    namespace:BuildTasks.Activities;assembly=BuildTasks}TFSBuildLocalizer'.
    

    我发现我删除了CodeActivity项目中的所有自定义引用,并注释掉了所有代码。

    我已将输出dll添加到TFS,并且我在项目的属性中有以下post构建脚本:

    "$(DevEnvDir)\TF.exe" checkout "$/MyCompany/Development/Djenne/Dev/Tools/BuildProcess/Output/$(TargetFileName)"
    copy /Y "$(TargetPath)" "C:\tfs2010\MyCompany\Dev\Tools\BuildProcess\Output\$(TargetFileName)"
    "$(DevEnvDir)\TF.exe" checkin "$/MyCompany/Development/Djenne/Dev/Tools/BuildProcess/Output/$(TargetFileName)"
    

    我已确保工作流xaml中的命名空间对于自定义CodeActivity是正确的。

    我不知道我还能尝试什么,

    请帮忙!

    谢谢,

    编辑:我正在添加更多关于我已尝试过的内容的说明:

    CodeActivity类已具有以下属性:

    [BuildActivity(HostEnvironmentOption.All)]
    

    CodeActivity类包含在Activity Library项目中。 这是csproj文件中的ProjectTypeGuids标记:

    <ProjectTypeGuids>{32f31d43-81cc-4c15-9de6-3fc5453562b6};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
    

    在自定义工作流xaml中,我在“获取受影响的测试,索引源和发布符号”之后立即添加了我的CodeActivity

    我目前在CodeActivity中没有任何InArgument或OutArgument。

    这些是我的CodeActivity项目中的参考:

    • Microsoft.CSharp
    • Microsoft.TeamFoundation.Build.Client
    • 系统
    • System.Activities
    • System.Core程序
    • System.Data
    • System.Data.DataSetExtensions
    • System.Xaml
    • 的System.Xml
    • System.Xml.Linq的
    • WindowsBase

    在“构建控制器属性”中,我使用与构建后脚本相同的TFS路径设置了“自定义程序集的版本控制路径”: $ / MyCompany的/开发/杰内/ DEV /工具/ BuildProcess /输出

    在我的构建定义中,我使用自定义工作流程xaml设置了“构建流程模板”。

    谢谢你们的答案,你还有什么想法吗? 感谢

5 个答案:

答案 0 :(得分:7)

好的,我弄清楚了这件事。

这对我有用:

我已经在构建服务器中将我的dll安装到GAC,运行构建并突然运行了!

gacutil.exe /i buildtasks

之后,我已经从GAC卸载了这个dll,它仍在继续工作。

gacutil.exe /u buildtasks

另一件事,我的项目有几个引用,我还必须在与CodeActivity dll本身相同的目录中签入。 所以要做到这一点我已经改变了我的项目的后期构建脚本:

cd "C:\tfs2010\Djenne\Dev\Tools\BuildProcess\Output\"
"$(DevEnvDir)\TF.exe" checkout "$/TradeNetworks/Development/Djenne/Dev/Tools/BuildProcess/Output/*.*"
xcopy "$(TargetDir)*.*" "C:\tfs2010\Djenne\Dev\Tools\BuildProcess\Output\" /E /R /C /Y

现在唯一要做的就是弄清楚如何调试这个该死的东西。 但这是另一个问题的问题。

感谢所有帮助过的人,

希望这对未来的任何人都有帮助。

修改

我注意到的另一件事是,每当我编辑自定义工作流时,它都会重新生成xaml并从自定义CodeActivity命名空间(xmlns)中删除“; assembly = BuildTasks”后缀。 因此,在每次更改后,我都需要编辑xaml来反复修复它,否则同样的错误会重复出现。

答案 1 :(得分:4)

您必须使用BuildActivity属性修饰您的类。请参见底部的http://www.ewaldhofman.nl/post/2010/05/27/Customize-Team-Build-2010-e28093-Part-7-How-is-the-custom-assembly-found.aspx。有一个UPDATE部分包含更多信息。

答案 2 :(得分:3)

CustomActivity的装配在哪里?您必须将此程序集添加到源代码管理并将其引入您正在使用的构建控制器。为此:

  1. 右键单击Builds节点。
  2. 选择管理构建控制器。
  3. 点击属性。
  4. 在“自定义程序集的版本控制路径”部分中,介绍您的程序集。

答案 3 :(得分:1)

我有同样的问题。原因是我使用针对x86平台的自定义活动编译了库,而构建控制器运行的是64位Windows 2008 VM。将目标平台切换到AnyCPU允许构建控制器立即使用库,而无需将其添加到GAC。

答案 4 :(得分:0)

问题可能与输出dll在TFS中有关。

可能会发生以下情况:

  • TFS做最新的
  • 获取输出dll并且只读
  • TFS尝试构建
  • 构建尝试写入dll
  • 由于dll是只读的,因此会出现异常