【问题标题】:TFS 2015 Builds giving error after migrating from 2012从 2012 年迁移后,TFS 2015 Builds 出现错误
【发布时间】:2016-03-25 02:23:33
【问题描述】:

我们已从 TFS 2012 迁移到 TFS 2015,但在迁移后我们的构建无法正常工作。我们收到以下错误。 我在互联网上找不到太多关于此的内容。 请帮忙。

TF215097: An error occurred while initializing a build for build definition \Cockpit\DB.Dev.MetadataDB.Build: 
Exception Message: Could not load file or assembly 'Microsoft.TeamFoundation, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified. (type FileNotFoundException)
Exception Stack Trace: at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.LoadWithPartialNameInternal(AssemblyName an, Evidence securityEvidence, StackCrawlMark& stackMark)
at System.Reflection.Assembly.LoadWithPartialName(String partialName)
at System.Activities.Expressions.AssemblyReference.LoadAssembly(AssemblyName assemblyName)
at System.Activities.Expressions.AssemblyReference.GetAssembly(AssemblyName assemblyName)
at Microsoft.VisualBasic.Activities.VisualBasicHelper.Initialize(HashSet`1 refAssemNames, HashSet`1 namespaceImportsNames)
at Microsoft.VisualBasic.Activities.VisualBasicHelper.Compile[T](String expressionText, CodeActivityPublicEnvironmentAccessor publicAccessor, Boolean isLocationExpression)
at Microsoft.VisualBasic.Activities.VisualBasicValue`1.CacheMetadata(CodeActivityMetadata metadata)
at System.Activities.CodeActivity`1.OnInternalCacheMetadataExceptResult(Boolean createEmptyBindings)
at System.Activities.Activity`1.OnInternalCacheMetadata(Boolean createEmptyBindings)
at System.Activities.Activity.InternalCacheMetadata(Boolean createEmptyBindings, IList`1& validationErrors)
at System.Activities.ActivityUtilities.ProcessActivity(ChildActivity childActivity, ChildActivity& nextActivity, Stack`1& activitiesRemaining, ActivityCallStack parentChain, IList`1& validationErrors, ProcessActivityTreeOptions options, ProcessActivityCallback callback)
at System.Activities.ActivityUtilities.ProcessActivityTreeCore(ChildActivity currentActivity, ActivityCallStack parentChain, ProcessActivityTreeOptions options, ProcessActivityCallback callback, IList`1& validationErrors)
at System.Activities.ActivityUtilities.CacheRootMetadata(Activity activity, LocationReferenceEnvironment hostEnvironment, ProcessActivityTreeOptions options, ProcessActivityCallback callback, IList`1& validationErrors)
at System.Activities.Validation.ActivityValidationServices.InternalActivityValidationServices.InternalValidate()
at Microsoft.TeamFoundation.Build.Workflow.WorkflowHelpers.ValidateWorkflow(Activity activity, ValidationSettings validationSettings)
at Microsoft.TeamFoundation.Build.Hosting.BuildProcessCache.LoadFromXaml(String workflowXaml, TextExpressionImports textExpressionImports)
at Microsoft.TeamFoundation.Build.Hosting.BuildControllerWorkflowManager.PrepareRequestForBuild(WorkflowManagerActivity activity, IBuildDetail build, WorkflowRequest request, IDictionary`2 dataContext)
at Microsoft.TeamFoundation.Build.Hosting.BuildWorkflowManager.TryStartWorkflow(WorkflowRequest request, WorkflowManagerActivity activity, BuildWorkflowInstance& workflowInstance, Exception& error, Boolean& syncLockTaken)
Inner Exception Details:
Exception Message: Could not load file or assembly 'Microsoft.TeamFoundation, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified. (type FileNotFoundException)
Exception Stack Trace: 

【问题讨论】:

    标签: visual-studio-2015 tfsbuild tfs-2015


    【解决方案1】:

    检查您的自定义 XAML 文件并确保删除了对 Version=11.0.0, PublicKeyToken=123445 的任何引用。只需通过它的简单名称提及大会。这允许 Team Build 加载与构建服务器版本匹配的版本。

    如果幸运的话,旧的自定义是二进制兼容的,但在最坏的情况下,您需要根据当前版本的 TFS 客户端对象模型重新编译它们。

    另见:

    【讨论】:

      【解决方案2】:

      TFS 2015 在构建服务的配置中发布了不正确的绑定重定向; TFSBuildServiceHost.exe.config.

      <dependentAssembly>
        <assemblyIdentity name="Microsoft.TeamFoundation" 
                          publicKeyToken="b03f5f7f11d50a3a" 
                          culture="neutral"/>
        <bindingRedirect oldVersion="10.0.0.0-12.9.0.0" newVersion="14.0.0.0"/>
      </dependentAssembly>
      

      没有Microsoft.TeamFoundation, Version=14.0.0.0

      Microsoft.TeamFoundation.dll 只存在到 TFS 2012,之后此 dll 中的命名空间合并到 Microsoft.TeamFoundation.Common.dll

      我已向 Microsoft 提出了Connect Bug。您可以将模板中的 Microsoft.TeamFoundation 引用更新为 Microsoft.TeamFoundation.Common,或者删除/修改重定向到以下内容。

      <dependentAssembly>
        <assemblyIdentity name="Microsoft.TeamFoundation" 
                          publicKeyToken="b03f5f7f11d50a3a" 
                          culture="neutral"/>
        <bindingRedirect oldVersion="10.0.0.0" newVersion="11.0.0.0"/>
      </dependentAssembly>
      

      这里需要注意的是,您正在运行 TFS 2012 的同一基础架构上运行 TFS 2015 构建服务(或至少安装了相同的依赖项),Microsoft.TeamFoundation.dll 与 Visual Studio 2012 及之前版本一起分发.

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-09-25
        • 2013-02-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-17
        • 1970-01-01
        相关资源
        最近更新 更多