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

Cap*_*ain 9 tfs xaml workflow-foundation tfsbuild tfs2010

可能重复:
TFS 2010自定义生成活动TF215097错误

我正在尝试创建一个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

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

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'.
Run Code Online (Sandbox Code Playgroud)

我发现我删除了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)"
Run Code Online (Sandbox Code Playgroud)

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

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

请帮忙!

谢谢,

编辑:我正在添加更多关于我已经尝试过的内容的描述:

CodeActivity类已经具有以下属性:

[BuildActivity(HostEnvironmentOption.All)]
Run Code Online (Sandbox Code Playgroud)

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

<ProjectTypeGuids>{32f31d43-81cc-4c15-9de6-3fc5453562b6};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
Run Code Online (Sandbox Code Playgroud)

在自定义工作流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/Development/Djenne/DEV/Tools/BuildProcess/Output

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

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

Cap*_*ain 7

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

这对我有用:

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

gacutil.exe /i buildtasks
Run Code Online (Sandbox Code Playgroud)

之后,我从GAC卸载了dll,它仍然保持工作状态.

gacutil.exe /u buildtasks
Run Code Online (Sandbox Code Playgroud)

另一件事,我的项目有几个引用,我也必须在与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
Run Code Online (Sandbox Code Playgroud)

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

感谢所有帮助过的人,

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

编辑:

One more thing I've noticed is every time I edit my custom workflow, it regenerates the xaml and removes the ";assembly=BuildTasks" suffix from the custom CodeActivity namespace (xmlns). So after every change I need to edit the xaml to fix it over and over again, otherwise the same error reoccurres.