Team Foundation Server,在没有Workspace的情况下签出文件

时间:2011-05-27 07:30:45

标签: vb.net tfs

我有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)

由于

2 个答案:

答案 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);

}