ProjectItems.AddFromFile将文件添加到待定更改

时间:2016-06-24 15:19:41

标签: visual-studio powershell tfs nuget-package envdte

作为我的nuget包的一部分,我有一个 install.ps1 powershell脚本,我用它来从包中添加一个参考文件(几个文本文档)工具文件夹。

一切都很好,除了在TFS解决方案中引用文件时,它们会被添加到团队资源管理器待定更改中。如何将其从待处理的更改中删除(或让它们不再显示)?我不希望这些检入TFS,因为包文件夹不应该在那里。

这是我的install.ps1脚本:

param($installPath, $toolsPath, $package, $project)

#Add reference text files to the project and opens them

Get-ChildItem $toolsPath -Filter *.txt |
ForEach-Object {

    $projItem = $project.ProjectItems.AddFromFile($_.FullName)
    If ($projItem -ne $null) {
        $projItem.Properties.Item("BuildAction").Value = 0  # Set BuildAction to None
    }
}

2 个答案:

答案 0 :(得分:0)

如果您正在使用本地工作区(TFS 2012+),则可以使用.tfignore文件排除本地文件夹和文件显示在团队资源管理器的“待更改”页面中。

您可以通过将名为.tfignore的文本文件放在要应用规则的文件夹中来配置要忽略的文件类型。

.tfignore文件规则

The following rules apply to a .tfignore file:
- \# begins a comment line
- The \* and ? wildcards are supported.
- A filespec is recursive unless prefixed by the \\ character.
- ! negates a filespec (files that match the pattern are not ignored)

.tfignore文件示例

######################################
# Ignore .cpp files in the ProjA sub-folder and all its subfolders
ProjA\*.cpp
# 
# Ignore .txt files in this folder 
\*.txt
#
# Ignore .xml files in this folder and all its sub-folders
*.xml
#
# Ignore all files in the Temp sub-folder
\Temp
#
# Do not ignore .dll files in this folder nor in any of its sub-folders
!*.dll

详细信息:https://www.visualstudio.com/docs/tfvc/add-files-server#customize-which-files-are-ignored-by-version-control

答案 1 :(得分:0)

我终于想出了如何使用tf.exe来做到这一点。使用完整文件名调用tf vc undo将撤消对这些文件的挂起更改。如果文件夹不与TFS绑定,则不会造成任何伤害。它只是继续。

此实现确实需要安装VS 2015(由于IDE文件夹的硬编码路径),因此我正在寻找更好的方法来获取当前加载的IDE的IDE路径。但就目前而言,这解决了我当前的问题。

param($installPath, $toolsPath, $package, $project)

$idePath = "$env:VS140COMNTOOLS..\IDE"
$tfPath = "$idePath\tf.exe"

Get-ChildItem $toolsPath -Filter *.txt |
ForEach-Object {

    $projItem = $project.ProjectItems.AddFromFile($_.FullName)
    If ($projItem -ne $null) {
        $projItem.Properties.Item("BuildAction").Value = 0  # Set BuildAction to None

        $filename = $_.FullName

        & $tfPath vc undo `"$filename`" # Remove File from TFS Pending Changes, as AddFromFile can automatically add it
    }
}