如何让 TFS2010检测对 VisualStudio 之外的文件所做的更改?

我在 VisualStudio2010中使用 TeamFoundationServer2010。

每当我在 Visual Studio 之外修改文件时,TFS 似乎不会检测到对文件所做的更改,因此不会提供修改后签入文件的选项。

这个问题怎么解决?

57263 次浏览

Visual Sourcesafe 也是这样工作的,我让 VSS 或 TFS 注意到这个变化的方法是在 Visual Studio 中检出文件一次。

If you have a network connection to your server while you're working outside of Visual Studio, it's probably best to go ahead and check the file out before editing it, either using the tf command line client, or using the Windows Explorer shell integration that's available in the TFS Power Tools release. (Plus an increasing number of other tools have TFS integration that makes this automatic, but if you're just using notepad, this still needs to be a manual step.)

当然,有很多时候您正在工作,但是没有可用的网络连接来检出文件。

If you know what files you've modified, you can just check them out from within Visual Studio, then you'll be able to check them back in.

如果您不知道编辑了哪些文件,可以通过运行 tfpt online命令(也是 Power Tools 版本的一部分)来检测更改。这将定位在本地修改过的文件,并从服务器检出这些文件。

Try this. It's some sort of workaround, but it works:

  1. make changes outside of Visual Studio
  2. 转到 VisualStudio 并打开源代码管理资源管理器
  3. 右键单击文件夹 > "Check Out for Edit" > “退房”
  4. 右击同一文件夹 > “撤销挂起的修改...” > "Undo changes" > “ 向所有人说不

就是这样,变化现在可见了。

*1- make changes outside of Visual Studio
2- go to Visual Studio and open Source Control Explorer
3- right click on the folder > "Check Out for Edit" > "Check Out"
4- right click on the same folder > "Undo Pending Changes..." > "Undo changes" > "No to All"*

我在一个树枝上测试了这个变通方法,它对我很有帮助。但是只有新文件和新文件夹必须手动完成。

我建议在操作之前创建一个分支。它可以隔离操作的时间。

注意: 这种技术还对文件进行相同的清理,TFS 总是将这些文件标记为已修改。

There's also another solution to get TFS to figure out the files that have changed outside of Visual Studio:

  1. 脱机打开解决方案
  2. 在解决方案资源管理器中选择解决方案文件,然后按 Go Online 按钮(< img src = “ https://i.stack.imgur.com/VzNZ6.png”alt = “ GoOnline Button Icon”>)

在此之后,TFS 将自动扫描解决方案中的更改。

第一步可以通过许多不同的方法来实现。以下是一些方法:

  • 使用 GoOffline扩展-非常简单和有效。
  • 如果在打开解决方案时要求您提供 TFS 凭据(没有自动域认证) ,那么不要输入凭据。该解决方案将脱机打开,您将在按下“上网”按钮后登录
  • 断开网络电缆; 打开解决方案; 连接网络电缆。

这对我很有用,使用 TFS 电动工具:

tfpt online /adds /deletes /diff /noprompt /recursive directory-name

(where directory-name is the path to the directory to be updated, otherwise it will detect changes throughout your entire TFS repository)

如果你想知道如果不做任何改变它会做什么,你可以通过添加 /preview开关来强制它进行一次模拟运行。

打开源代码管理,进入 TFS 文件夹。右键单击该文件夹并选择“比较”。

注意,编辑后的文件显示为红色。

我发现这比 tfpt online更好,因为 tfpt online也可以得到非只读和未编辑的文件。

TFS 对此有一个“ Reconcile”命令:

  1. 打开 源代码管理资源管理器
  2. 右键单击包含更改的文件夹并选择 比较一下
  3. 选择要协调的文件(按 CTRL + A选择所有文件)
  4. 点击 和解按钮
  5. 协调文件夹差异对话框中设置选项。确保 Files that do not have pending changes设置为 退房
  6. OK
  7. 如果有本地更改,将显示 退房对话框。请设置首选的 锁定类型
  8. 退房

Reconcile Folder Differences

参见: 协调文件夹之间的差异

过去我遇到过这个问题,当我的 Internet 关闭并且我离线工作时,我的大部分更改都不会出现在团队浏览器中。

以下步骤: First, In the solution explorer, select the folder that you want to re-conciliate (for me, it was my entire solution folder), and select 比较一下..。 enter image description here 单击 修改过滤器,在 过滤器文本框中,您可以键入:

*.cs;!obj\;!bin\;!packages\;

在这个例子中,它将在搜索中只包含 C # 文件,并排除在文件夹中: bin,obj 和包。

请注意,列 等待改变的信息是否文件被标记为编辑,添加等... 或没有..。

  • 若要将其标记为 edit(当本地项具有匹配的服务器项时) ,请选择该文件并选择 看看编辑..。
  • 若要标记为 (当本地项目没有任何服务器项目时) ,请选择文件并选择 添加文件

Finally, I am not sure why the projects are not listed here (after I remove *.cs filter, still doesn't show up), so rebuild the solution to make sure the projects updates as well

+ In the solution, click the connect button (if shows up) that said 上网.

我发现在 Visual Studio 2015中,随着项目的打开,Visual Studio 自己发现文件已经被外部修改,并且不需要我做任何事情就自动检出它们。以正常方式签入项目保存了外部修改。

在我的例子中,下面的方法起作用了(至少我曾经试过一次) :

  1. 转到 等待改变面板
  2. 在“包含”或“排除”更改下选择 View Options
  3. 秀给所有人看显示解决方案更改之间切换
  4. 如果需要,可以切换回来

Refresh TFS Changes

更改“视图选项”似乎会强制刷新已修改的文件。