2016-09-25 56 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年。 仍在挖掘以获得更多。