web-dev-qa-db-ja.com

Visual Studio 2013でtfIgnoreが機能しない

tfIgnoreVisual Studio 2013で動作させるために髪を引っ張っています。

私はここの指示に従いました: この記事の下部 で、次のようにパッケージファイルを除外しました:

\folderA\folderB\packages 

パスは問題なく見え、Visual Studioが生成したものです。 Visual Studioがファイルを生成した場所にファイルをチェックインして再構築を試みましたが、パッケージはすべて、保留中の変更のincluded changesフォルダーにまだ表示されています。

私はファイルの場所とfilespecコマンドの他のあらゆる種類の組み合わせを試しましたが、何もしないようです。

私は明白な何かを見逃していますか?

30
davy

NuGetのバグが問題の原因である可能性があります。これは 回避策 です。

  1. .nugetフォルダーが存在しない場合は、ソリューションフォルダーにあります。

  2. の中に .nugetフォルダ、ファイルを作成nuget.configこのコンテンツ:

<configuration>
    <solution>
        <add key="disableSourceControlIntegration" value="true" />
    </solution>
</configuration>
17
Edward Brey

repositories.configのように、packagesフォルダーで1つのファイルをチェックしていると、.tfignoreパターンが機能しないことに気付きました。

私の解決策は、パッケージフォルダーをソース管理から完全に削除することでした。その後、パッケージのコンテンツは正常に無視されました。

11
Edward Wilde

保留中の変更で、ルートパッケージフォルダーを右クリックし、[元に戻す]をクリックします。除外された変更(ファイルをソース管理に昇格できるウィンドウ)の下の[検出された変更]ダイアログボックスに変更が移動するのを確認します。

次に、.tfignoreを開き、packagesを追加します。検出された変更を開くと、パッケージが表示されていないことがわかります。

9
Michael Fry

同じ問題がありました。私が行ったところ、NuGetクライアントにバグがあることがわかりました。

ファイルを無視

注:現在、NuGetクライアントには既知のバグがあり、クライアントが引き続きパッケージフォルダーをバージョン管理に追加します。回避策は、ソース管理統合を無効にすることです。これを行うには、ソリューションと並行する.nugetフォルダーにnuget.configファイルが必要です。このフォルダがまだ存在しない場合は、作成する必要があります。 nuget.configで、次のコンテンツを追加します。

http://docs.nuget.org/consume/package-restore/team-build

また、上記の「ファイルを無視する」セクションにリンクされている回避策を実行することで、それを機能させることができました。以下は回避策の抜粋です。

TFS統合の説明については.tfignoreファイルと.gitignoreファイルを尊重してください

Visual StudioでTFS統合を使用する場合、/ packagesフォルダーを無視するように指定されている.tfignoreまたは.gitignoreファイルがある場合でも、NuGetは/ packagesフォルダーへの追加を保留します。 NuGetは、ユーザーがdisableSourceControlIntegration = trueを持つNuGet.configファイルを作成することを要求するのではなく、無視ファイルを尊重する必要があります。

これは、LocalItemExclusionEvaluatorを呼び出すことで実行できます。 http://msdn.Microsoft.com/en-us/library/Microsoft.teamfoundation.versioncontrol.client.localitemexclusionevaluator.aspx

TFSにアイテムを追加する前に、このエバリュエーターを確認する必要があります。他に何もなければ、少なくとも/ packagesフォルダーに対して行う必要があります。

https://nuget.codeplex.com/workitem/4072

4

変更を無視するファイルまたはフォルダーがTFSにチェックインされている場合、.tfignoreでそれらを無視しても何も起こりません。最初にソース管理から削除する必要があります。そうすることで、それらに対する変更は無視されます。

4
Matty J

「aheidebrecht」と呼ばれる誰かがNuGetパッケージを提供して、NuGetパッケージがTFSにチェックインできないようにしているようです。少し変態のようです...

パッケージマネージャーコンソールで実行...

PM> Install-Package DisableSourceControlIntegration-TFS -Version 1.0.1 

https://www.nuget.org/packages/DisableSourceControlIntegration-TFS

1
barrypicker