Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xaml 错误';TF215097:…无法为…';创建未知类型;自定义代码活动_Xaml_Tfs_Workflow Foundation_Tfsbuild - Fatal编程技术网

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路径设置了“自定义程序集的版本控制路径”: $/MyCompany/Development/Djenne/DEV/Tools/BuildProcess/Output

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

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

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

    可能发生的情况如下:

    • TFS有最新消息吗
    • 输出dll已获取且为只读
    • TFS试图建立
    • 生成尝试写入dll
    • 由于dll是只读的,因此会出现异常

      • 您必须使用BuildActivity属性来装饰类。看下面。有一个更新部分包含更多信息。

        CustomActivity的组装在哪里?必须将此程序集添加到源代码管理中,并将其引入正在使用的生成控制器。为此:

      • 右键单击Builds节点
      • 选择管理生成控制器
      • 单击属性
      • 在“自定义程序集的版本控制路径”部分,介绍您的程序集

      • 好吧,我把这件事弄明白了

        以下是对我有效的方法:

        我已经将我的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