Xaml 错误';TF215097:…无法为…';创建未知类型;自定义代码活动
可能重复:Xaml 错误';TF215097:…无法为…';创建未知类型;自定义代码活动,xaml,tfs,workflow-foundation,tfsbuild,Xaml,Tfs,Workflow Foundation,Tfsbuild,可能重复: 我正在尝试创建一个CustomActivity,以便在每次成功构建之后运行 我已经遵循了几个教程的确切步骤 所有这些都导致了相同的结果-生成在几秒钟后失败,并出现以下错误: TF215097: An error occurred while initializing a build for build definition \MyCompany\Dev - Client: Cannot create unknown type '{clr- namespace:BuildTa
我正在尝试创建一个CustomActivity,以便在每次成功构建之后运行 我已经遵循了几个教程的确切步骤 所有这些都导致了相同的结果-生成在几秒钟后失败,并出现以下错误:
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,并且在项目的属性中有以下生成后脚本:
"$(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类包含在活动库项目中。
以下是csproj文件中的ProjectTypeGuids标记:
<ProjectTypeGuids>{32f31d43-81cc-4c15-9de6-3fc5453562b6};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
{32f31d43-81cc-4c15-9de6-3fc5453562b6};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
在自定义工作流xaml中,我在“获取受影响的测试、索引源和发布符号”之后添加了CodeActivity
目前,我的代码活动中没有任何不一致或不一致的地方
以下是我的CodeActivity项目中的参考:
- Microsoft.CSharp
- Microsoft.TeamFoundation.Build.Client
- 系统
- 系统.活动
- 系统核心
- 系统数据
- System.Data.DataSetExtensions
- System.Xaml
- Xml
- System.Xml.Linq
- 窗台
谢谢问题可能与TFS中的输出dll有关 可能发生的情况如下:
- TFS有最新消息吗
- 输出dll已获取且为只读
- TFS试图建立
- 生成尝试写入dll
- 由于dll是只读的,因此会出现异常
- 右键单击Builds节点
- 选择管理生成控制器
- 单击属性
- 在“自定义程序集的版本控制路径”部分,介绍您的程序集
- 您必须使用BuildActivity属性来装饰类。看下面。有一个更新部分包含更多信息。CustomActivity的组装在哪里?必须将此程序集添加到源代码管理中,并将其引入正在使用的生成控制器。为此:
好吧,我把这件事弄明白了 以下是对我有效的方法: 我已经将我的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来反复修复它,否则同样的错误会再次发生。我遇到了完全相同的问题。原因是我在x86平台上编译了带有自定义活动的库,而构建控制器运行的是64位Windows2008虚拟机。将目标平台切换到AnyCPU允许构建控制器立即使用库,而无需将其添加到GAC。为什么TFS会尝试在dll上写入???此外,在这种情况下,异常应该是某种IO异常,而不是“无法创建未知类型”,你不这么认为吗?不是TFS,构建,它构建源代码并将dll输出到与签入TFS的dll相同的位置。TFS中的错误消息通常是完全错误的OK,那么我可以做些什么来修复此问题?将签出从postbuild移动到prebuild,这将使文件成为可写文件,我已经具有此属性。但是,这修复了我的问题。谢谢@船长,你确定你已经登记了最新的装配吗?这在MSDN上解释得很奇怪。您不仅应该将项目/解决方案添加到源代码管理,还应该添加包含活动的程序集文件。我知道,TFS应该自己解决这个问题,但它没有遇到相同的问题…对我来说,这里的答案没有任何帮助,但这一个将有助于:+1在您的编辑中注意到问题-我也必须手动添加;assembly=bit to my xmlns:local attributeEdit用于加粗编辑,以避免其他人像我刚才那样把头撞到墙上。此答案中的编辑是我成功的关键+1到beardwizzle和Captain。添加编辑#2以获得更可行的解决方案。由于编辑#2被拒绝:“assembly=BuildTasks”如果生成任务与正在编辑的工作流XAML位于同一项目中,则会从XMLNS中删除该部分。使用两个单独的项目(一个用于编辑生成模板,一个用于创建自定义生成活动)可以解决此问题,并允许您编辑工作流i