使用PowerShell和TFS.exe更新和删除项目中的文件

时间:2012-04-02 19:39:00

标签: visual-studio powershell tfs

我使用PowerShell修改解决方案中的一系列配置文件。该解决方案受TFS 2010控制。

该解决方案包含许多项目,配置文件都是xml文件。简单的部分是如果我只需要修改文件,我使用checkout命令检查它,然后在我完成后保存文件。都好。我进入Visual Studio,看到修改后的文件更新为挂起的更改,如我所料

我遇到困难的部分是我有一个不再需要的配置文件,可以删除。实际上,使用delete命令会将文件标记为挂起删除,但它不会修改包含已删除文件的项目文件。

当我通过Visual Studio删除文件时,它会自动检出并修改项目文件。使用命令行删除时,我得不到相同的结果。

我手动执行此操作并不实际,因为我正在删除超过1,000个文件。

非常感谢任何帮助!

谢谢。

2 个答案:

答案 0 :(得分:2)

这里有两个组件可供使用。当您在VS内部运行时,项目系统会处理所有文件命令(添加,删除,编辑等),然后调用TFS对象模型以实际挂起TFS中的更改。项目系统也是负责从项目文件中删除引用的系统。当TFS OM在Visual Studio外部运行时,它不知道文件是否是项目的一部分。

如果您有一个需要删除的xml文件列表,最好的办法是编写一个读取这些文件的脚本并将其从项目文件中删除(当然,等待项目文件编辑后)。

-Taylor, TFS版本控制开发负责人

答案 1 :(得分:1)

谢谢大家的回复。经过多次挖掘和反复试验后,我想通了。这比我制作它更简单。

简而言之,我使用DTE并使用PowerShell控制台从VS中运行我的脚本。它是这样的:

$mySolution = $dte.Solution
$projectItem = $mySolution.FindProjectItem($fileToRemove)

if ( $projectItem -ne $null )
{                    
    $projectItem.Remove()                    
}

在ProjectItem上执行Remove()命令检出相应的项目并相应地编辑它。

再一次,再次感谢你们所有人看到我的问题并做出回应的时间。希望有一天能帮助别人!