【问题标题】:Can't use TFS 2015 RestApi in Powershell using 'Microsoft.TeamFoundationServer.ExtendedClient' with Powershell无法在 Powershell 中使用“Microsoft.TeamFoundationServer.ExtendedClient”在 Powershell 中使用 TFS 2015 RestApi
【发布时间】:2016-09-29 23:58:00
【问题描述】:

我正在尝试创建一个 powershell 模块,以使用 Powershell 3 和 Nuget Packages 'Microsoft.TeamFoundationServer.ExtendedClient' 中的程序集与新的 Rest Api 交互 15.104.0-preview 641 2016 年 8 月 22 日星期一

还从该模块安装了更多模块。

我做了一个基本测试,在使用 Add-Type 加载程序集后,我加载了以下程序集。

Microsoft.VisualStudio.Services.Common - 15.104.25618.0
Microsoft.VisualStudio.Services.WebApi - 15.104.25618.0
Microsoft.VisualStudio.Services.Client - 15.104.25618.0
Microsoft.TeamFoundation.Common - 15.104.25618.0
Microsoft.TeamFoundation.Client - 15.104.25618.0
Microsoft.TeamFoundation.VersionControl.Client - 15.104.25618.0
Microsoft.TeamFoundation.WorkItemTracking.Client - 15.104.25618.0
Microsoft.TeamFoundation.Build.Client - 15.104.25618.0
Microsoft.TeamFoundation.Build.Common - 15.104.25618.0
Microsoft.TeamFoundation.Build2.WebApi - 15.104.25618.0
Microsoft.TeamFoundation.DistributedTask.WebApi - 15.104.25618.0
Newtonsoft.Json - 8.0.3.19514
System.Web.Http - 5.2.20826.0

为了加载 System.Web.Http 我必须加载 Newtonsoft.Json.dll 版本 6.0.8

Add-Type -Path 'D:\Temp\Newtonsoft.Json.6.0.8\lib\net45\Newtonsoft.Json.dll' 

加载所有 dll 后,我尝试创建 BuildHttpClien,但出现错误。

$cre = New-Object -TypeName 'Microsoft.VisualStudio.Services.Common.VssCredentials' -ArgumentList (Get-Credential)
$build = New-Object -TypeName 'Microsoft.TeamFoundation.Build.WebApi.BuildHttpClient' -ArgumentList ([uri]'{TfsCollectionUrl}'),$cre

当我运行这段代码时,我得到了以下错误

Method not found: 'Newtonsoft.Json.JsonSerializerSettings System.Net.Http.Formatting.BaseJsonMediaTypeFormatter.get_SerializerSettings()'. (raised by: New-Object)

我在 Powershell ISE 中尝试了上面的代码在 Powershell 3.0 兼容性中。

【问题讨论】:

    标签: powershell tfs


    【解决方案1】:

    Microsoft.AspNet.WebApi.Client 包中提供了“System.Net.Http.Formatting”和“Newtonsoft.Json”。要修复你得到的错误,你可以安装这个 nuget 包,然后从 PowerShell 加载这两个引用。

    Add-Type -Path 'D:\Temp\Microsoft.AspNet.WebApi.Client.5.2.2\lib\net45\System.Net.Http.Formatting.dll'
    Add-Type -Path 'D:\Temp\Newtonsoft.Json.6.0.4\lib\net45\Newtonsoft.Json.dll'
    

    【讨论】:

      【解决方案2】:

      Nuget Packages 'Microsoft.TeamFoundationServer.ExtendedClient' 15.104.0-preview 是 Microsoft Team Foundation Server 扩展客户端的预发布版本。建议使用最新稳定版14.102.0

      【讨论】:

        【解决方案3】:

        感谢 Highlight 应该使用预发布。事实证明,它支持比 TFS 2015.2 更高版本的 TFS 的 API 调用(某些 API 调用使用版本 3)

        我使用了以下 Nuget 包。下载它们并将所有 *.dll 复制到一个文件夹中。

        id                                                version       
        --                                                -------       
        Microsoft.AspNet.WebApi.Client                    5.2.2         
        Microsoft.AspNet.WebApi.Core                      5.2.2         
        Microsoft.IdentityModel.Clients.ActiveDirectory   2.22.302111727
        Microsoft.TeamFoundationServer.Client             14.102.0      
        Microsoft.TeamFoundationServer.ExtendedClient     14.102.0      
        Microsoft.VisualStudio.Services.Client            14.102.0      
        Microsoft.VisualStudio.Services.InteractiveClient 14.102.0      
        Microsoft.WindowsAzure.ConfigurationManager       1.7.0.0       
        Newtonsoft.Json                                   6.0.8         
        System.IdentityModel.Tokens.Jwt                   4.0.0         
        WindowsAzure.ServiceBus                           2.5.1.0       
        

        我仅从一些选定的 .dll 中添加类型,这些 .dll 以特定顺序放入列表中。那个接缝是关键部分。 NewtonSoft.Json 现在是第一个并且是这项工作。

        Name             Assembly                                        
        ----             --------                                        
        NewtonJson       Newtonsoft.Json                                 
        IdentityModel    Microsoft.IdentityModel.Clients.ActiveDirectory 
        VSCommon         Microsoft.VisualStudio.Services.Common          
        VSCommonWebApi   Microsoft.VisualStudio.Services.WebApi          
        TFCommon         Microsoft.TeamFoundation.Common                 
        TFClient         Microsoft.TeamFoundation.Client                 
        VCClient         Microsoft.TeamFoundation.VersionControl.Client  
        WITClient        Microsoft.TeamFoundation.WorkItemTracking.Client
        BuildClient      Microsoft.TeamFoundation.Build.Client           
        BuildCommon      Microsoft.TeamFoundation.Build.Common           
        Build2           Microsoft.TeamFoundation.Build2.WebApi          
        DistributedTask  Microsoft.TeamFoundation.DistributedTask.WebApi 
        

        在这一切之后,我能够创建一些基本类型并开始我的 TFS 2015 Rest web Api 之旅。

        $credential = [Microsoft.VisualStudio.Services.Common.VssCredentials]::new($true)
        
            PromptType Federated Windows                                                  Storage
            ---------- --------- -------                                                  -------
        PromptIfNeeded           Microsoft.VisualStudio.Services.Common.WindowsCredential        
        
        $buildhttpclient = [Microsoft.TeamFoundation.Build.WebApi.BuildHttpClient]::new($tfscollectionuri,$credential)
        
        $buildhttpclient.GetBuildsAsync('TEAMPROJECTNAME')
        
        
        
        Result                 : {31221, 31220, 31219, 31218...}
        Id                     : 165004
        Exception              : 
        Status                 : RanToCompletion
        IsCanceled             : False
        IsCompleted            : True
        CreationOptions        : None
        AsyncState             : 
        IsFaulted              : False
        AsyncWaitHandle        : System.Threading.ManualResetEvent
        CompletedSynchronously : False
        

        在 Result 属性中是构建。

        注意:看起来 Rest Api 将构建结果的数量限制为 1000 个。 仍在四处挖掘以获取更多信息。

        【讨论】:

          猜你喜欢
          • 2016-07-19
          • 2017-01-28
          • 2017-12-16
          • 1970-01-01
          • 1970-01-01
          • 2022-12-17
          • 2021-01-10
          • 2017-10-10
          • 1970-01-01
          相关资源
          最近更新 更多