Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何以编程方式查明脱机时本地文件是否受TFS版本控制_C#_Tfs - Fatal编程技术网

C# 如何以编程方式查明脱机时本地文件是否受TFS版本控制

C# 如何以编程方式查明脱机时本地文件是否受TFS版本控制,c#,tfs,C#,Tfs,我有一个小型的内部VisualStudio扩展(VS2013),其中一个特性是,我需要确定磁盘上的文件是否受TFS版本控制 (我所说的“在TFS版本控制下”是指所讨论的文件由TFS跟踪,以便可以签出、编辑、签入等。) 下面的代码就是我今天的代码,只要您连接到TFS,它就可以正常工作。它使用一个 现在的问题是,当您不在office防火墙内(或通过VPN连接)时,无法访问TFS服务器。事实上,主机名甚至无法解析 所以我的问题是:是否有其他方法可以让我确定文件是否受版本控制?最好使用公共API,但如果

我有一个小型的内部VisualStudio扩展(VS2013),其中一个特性是,我需要确定磁盘上的文件是否受TFS版本控制

(我所说的“在TFS版本控制下”是指所讨论的文件由TFS跟踪,以便可以签出、编辑、签入等。)

下面的代码就是我今天的代码,只要您连接到TFS,它就可以正常工作。它使用一个

现在的问题是,当您不在office防火墙内(或通过VPN连接)时,无法访问TFS服务器。事实上,主机名甚至无法解析

所以我的问题是:是否有其他方法可以让我确定文件是否受版本控制?最好使用公共API,但如果需要的话,我可以使用一个丑陋的黑客…

您可以使用这个:

   string underTfs = Microsoft.TeamFoundation.VersionControl.Client.Workstation.Current.IsMapped(path);

这是本地工作区还是服务器工作区?服务器工作区无法做到这一点(因为本地没有足够的数据来回答这个问题)。但是,这在本地工作区应该是可能的。不幸的是,这是一个服务器工作区。我知道脱机时,不可能知道服务器上的当前状态,但只要知道上次执行“获取最新信息”时的状态就可以了。这是一个好问题,但遗憾的是,客户端上保留的唯一状态是工作区映射。这可能会对您有所帮助:这将让您确定文件是否位于映射文件夹中。您可以推断映射文件夹中的只读文件位于TFS中。可写文件更为棘手:它们可能被签出,可能是挂起的添加,也可能只是根本不打算添加到源代码管理中的文件。(尽管我们建议明确隐藏这些文件。)如果有这些警告,我可以帮助您获取工作文件夹信息。@EdwardThomson如果您在回答中描述如何做到这一点,如果没有更好的解决方案,我会接受。我对一个至少解决了部分问题的黑客很满意:)你找到了这个@IsakSavo的解决方案吗?我有本地工作区,我需要知道一个文件是否已经在源代码管理下。即使给定的文件没有映射,这个方法也总是返回true。是的,我测试过,它总是返回true。
   string underTfs = Microsoft.TeamFoundation.VersionControl.Client.Workstation.Current.IsMapped(path);