2016-09-25 55 views
0

我想創建一個PowerShell模塊來使用Powershell 3和Nuget軟件包的Microsoft .TeamFoundationServer.ExtendedClient' 15.104.0-preview 641 2016年8月22日星期一不能在PowerShell中使用'Microsoft.TeamFoundationServer.ExtendedClient'在PowerShell中使用TFS 2015 RestApi

還從那個模塊安裝了一些模塊。

我做了一個基本的測試,並在我用加載類型加載程序集後,我加載了下列程序集。

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兼容性。

回答

0

Nuget包'Microsoft.TeamFoundationServer.ExtendedClient'15.104.0-preview是Microsoft Team Foundation Server Extended Client的預發佈版本。建議使用最新的穩定版本14.102.0

0

「System.Net.Http.Formatting」和「Newtonsoft.Json」在Microsoft.AspNet.WebApi.Client包中可用。爲了解決你得到的錯誤,你可以安裝這個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' 
0

感謝突出顯示應該使用預發行。原來它支持API調用比TFS 2015.2更高版本的TFS(某些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和以特定的順序添加的類型。這縫是一個關鍵部分。 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網站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 

進入結果屬性是構建。

注意:它看起來是休息Api限制構建結果的數量爲1000年。 仍在挖掘以獲得更多。