【发布时间】:2016-02-11 18:55:23
【问题描述】:
我正在使用 TFS API 将 TFS 2010 团队项目迁移到 TFS 2015。我在尝试调用VersionControlServer.GetLatestChangesetId() 和VersionControlServer.QueryHistory(...) 时遇到了问题。
我正在使用 2015 年的 nuget Team Foundation 包来提供 dll。
我得到的例外是:
'VersionControlServer.GetLatestChangesetId()' threw an exception of type 'System.Xml.XmlException'
Data: {System.Collections.ListDictionaryInternal}
HResult: -2146232000
HelpLink: null
InnerException: null
LineNumber: 0
LinePosition: 0
Message: "Unexpected end of file."
Source: "System.Runtime.Serialization"
SourceUri: null
StackTrace: " at System.Xml.EncodingStreamWrapper.ReadBOMEncoding(Boolean notOutOfBand)\r\n at System.Xml.EncodingStreamWrapper..ctor(Stream stream, Encoding encoding)\r\n at System.Xml.XmlUTF8TextReader.SetInput(Stream stream, Encoding encoding, XmlDictionaryReaderQuotas quotas, OnXmlDictionaryReaderClose onClose)\r\n at Microsoft.TeamFoundation.Client.Channels.TfsSoapMessageEncoder.ReadMessage(Stream stream)\r\n at Microsoft.TeamFoundation.Client.Channels.TfsHttpWebRequest.ReadMessage(HttpWebResponse webResponse, WebException webException, Stream responseStream, Boolean& closeResponse)\r\n at Microsoft.TeamFoundation.Client.Channels.TfsHttpWebRequest.ReadResponse(HttpWebResponse webResponse, WebException webException)\r\n at Microsoft.TeamFoundation.Client.Channels.TfsHttpWebRequest.IsAuthenticationChallenge(TfsMessage requestMessage, HttpWebResponse webResponse, WebException webException, TfsMessage& responseMessage)\r\n at Microsoft.TeamFoundation.Client.Channels.TfsHttpWebRequest.SendR
equest()\r\n at Microsoft.TeamFoundation.Client.Channels.TfsHttpRequestChannel.Request(TfsMessage message, TimeSpan timeout)\r\n at Microsoft.TeamFoundation.Client.Channels.TfsHttpClientBase.Invoke(TfsClientOperation operation, Object[] parameters, TimeSpan timeout, Object[]& outputs)\r\n at Microsoft.TeamFoundation.VersionControl.Client.Repository.GetRepositoryProperties()\r\n at Microsoft.TeamFoundation.VersionControl.Client.VersionControlServer.GetLatestChangesetId()"
TargetSite: {SupportedEncoding ReadBOMEncoding(Boolean)}
QueryHistory 和GetLatestChangesetId 的例外情况基本相同。从堆栈跟踪来看,从 2010 年到 2015 年,TFS 处理编码的方式可能有所不同。
我正在寻找一种解决方案,允许我通过 API 查询旧版 TFS 2010 和新版 TFS 2015。
【问题讨论】:
-
您可以尝试使用 TFS2010 dll 和 TFS2015 REST Api visualstudio.com/integrate/api/tfvc/changesets