2016-06-24 21 views
0

Im Rahmen meines nuget Pakets, ich habe einen install.ps1 Powershell-Skript, das ich (ein paar Textdokumente) aus dem Paket der Werkzeugen eine Referenzdatei zu dem Projekt hinzuzufügen bin mit Mappe.ProjectItems.AddFromFile Fügt Ausstehende Änderungen Datei

Alles funktioniert hervorragend, außer dass die Dateien, auf die in einer TFS-Lösung verwiesen wird, dem Team Explorer Pending Changes hinzugefügt werden. Wie kann ich sie ausstehenden Änderungen entfernen (oder verhindern, dass sie jemals angezeigt werden)? Ich möchte nicht, dass diese in TFS eingecheckt werden, da der Paketordner nicht dort sein sollte.

Hier ist mein install.ps1 Skript:

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 
    } 
} 
+0

Mögliches Duplikat [Wie kann ich eine bestimmte Datei von TFS Quellcodeverwaltung ausschließen] (http://stackoverflow.com/questions/1369442/how-can-i-exclude-a-specific-file-from -tfs-source-control) – Eris

+0

@Eris, ich glaube nicht, dass dies eine doppelte Frage ist, da Ihre Referenz nicht erklärt, wie dies zu tun ist Powershell. –

Antwort

0

ich endlich herausgefunden, wie es tf.exe mit zu tun. Wenn Sie tf vc undo mit dem vollständigen Dateinamen aufrufen, werden ausstehende Änderungen für diese Dateien rückgängig gemacht. Und wenn der Ordner nicht an TFS gebunden ist, ist kein Schaden angerichtet. Es geht einfach weiter.

Diese Implementierung erfordert VS 2015 installiert werden (aufgrund der hardcodes-Pfad zum IDE-Ordner), so suche ich nach einer besseren Möglichkeit, den IDE-Pfad der derzeit geladenen IDE zu erhalten. Vorerst löst das mein aktuelles Problem.

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 
    } 
} 
0

Wenn Sie lokale Arbeitsbereiche (TFS 2012+) verwenden Sie die .tfignore Datei verwenden können lokale Ordner und Dateien erscheinen in der Ausstehende Änderungen Seite auszuschließen im Team Explorer.

Sie können konfigurieren, welche Arten von Dateien ignoriert werden, indem Sie die Textdatei .tfignore in dem Ordner platzieren, in dem die Regeln angewendet werden sollen.

.tfignore Datei Regeln

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 Datei Beispiel

###################################### 
# 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 

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

+0

Also schlagen Sie vor, dass ich diese Datei in meinem Powershell-Skript erstelle/modifiziere? Gibt es dafür ein Hilfsobjekt? Die manuelle Aktualisierung einer Textdatei (und nur, wenn meine Zeilen nicht ignoriert werden) klingt nach einer ziemlich entmutigenden Aufgabe. –

+0

Keine Notwendigkeit, diese Datei in Powershell-Skript zu erstellen/ändern, können Sie die Regeln in der .tfignore-Datei direkt angeben. Wie Sie eine .tfignore-Datei erstellen und verwenden, erfahren Sie unter: https://www.visualstudio.com/docs/tfvc/add-files-server#create-and-use-a-tfignore-file –

+0

Das tut nicht t Arbeit obwohl. Ich möchte nicht, dass Entwickler eine .tfignore-Datei manuell erstellen/ändern müssen. Dies würde bedeuten, dass Entwickler, die das Entity Framework-Paket verwenden, die erforderlichen app.config-Änderungen manuell hinzufügen müssen. Ich würde es eher automatisieren, damit sie sich keine Sorgen machen müssen, dass Dateien überprüft werden. –