我有TFS网址,我有源文件位置,但我没有工作区路径。 如何在没有工作空间的情况下签出文件,或者如何找到某个文件的工作空间?
我已经在TFS中为checkout文件制作解决方案,但在某些情况下我没有工作区路径或名称。
Dim TeamFoundationServerURL As String ="TFS url"
Dim TeamProjectCollection As TfsTeamProjectCollection
'Get project collectio
TeamProjectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection( _
New Uri(TeamFoundationServerURL), New UICredentialsProvider())
TeamProjectCollection.EnsureAuthenticated()
Dim Workspace As Workspace
' get Version Control
Dim VersionControlServer As VersionControlServer
VersionControlServer = TeamProjectCollection.GetService(Of VersionControlServer)()
'location to check out files to:
Dim WorkspacePath As String = "__I dot have this path ___"
'find workspace
Workspace = VersionControlServer.GetWorkspace(WorkspacePath)
'Check out file
Workspace.PendEdit(SorceFilePath)
由于
答案 0 :(得分:3)
无法在没有工作空间的情况下退房。因此,如果您需要签出并且没有任何工作空间信息 - 您应该根据需要创建一个wokspace。 还有一个选项可以在没有工作空间VersionControlServer.DownloadFile的情况下下载文件。有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.versioncontrol.client.versioncontrolserver.downloadfile(v=vs.80).aspx。它不会被检出(如“view”控制台命令)。
答案 1 :(得分:1)
我想用我的autobuild做这件事。我检查了一个版本文件,然后重新检入(更新后)。由于这是构建机器,我没有工作空间映射,我可以保证。
我最后只是检查我所需的文件是否已映射。如果不是那么我会映射它。
我知道这不是你想要的解决方案,但我想我会把它扔到那里供你考虑。
这是我的代码,用于检出和签入:
private Version GetVersionFromTFS(Workspace currentWorkspace, string versionFileLocation, string versionFileName, out string localVersionPath)
{
// Make sure we have a map to the version file
if (!currentWorkspace.IsServerPathMapped(versionFileLocation))
{
// Map the version file to somewhere.
currentWorkspace.Map(versionFileLocation, @"C:\temp\BuildVersions" + Guid.NewGuid());
}
// Make sure we have the latest from source control.
GetRequest getRequest = new GetRequest(new ItemSpec(versionFileLocation + versionFileName,RecursionType.None), VersionSpec.Latest);
currentWorkspace.Get(getRequest, GetOptions.Overwrite);
localVersionPath = currentWorkspace.GetLocalItemForServerItem(versionFileLocation + versionFileName);
string oldVersion = "1.0.0.0";
if (File.Exists(localVersionPath))
oldVersion = File.ReadAllText(localVersionPath);
return new Version(oldVersion);
}
private void UpdateVersionBackToTFS(Workspace currentWorkspace, string versionFileLocation, string versionFileName, Version newVersion, String localVersionPath)
{
File.WriteAllText(localVersionPath, newVersion.ToString());
WorkspaceCheckInParameters parameters = new WorkspaceCheckInParameters(new[] {new ItemSpec(versionFileLocation + versionFileName, RecursionType.None)}, "***NO_CI*** - Updating Version" );
currentWorkspace.CheckIn(parameters);
}