web-dev-qa-db-ja.com

TFSに自分のパッケージフォルダーを無視させる

私はTFS(2013)に私のpackagesフォルダーを無視させようとしています。私はNuGetを使っているので情熱的にソース管理したくないし、それはすごい!

私はクローキングを試してみました(うまくいかないようです)、私は.tfignoreファイルを追加しようとしました - 何も無視されません。多くのSubversionクライアントのように、TFSチームがフォルダやファイルを永久に無視するオプションを追加しないのはなぜですか。

306
Matt

NuGetはソース管理関連のことを絶対にやるべきではないとしようとしているので(Microsoftは悪い形式です)、NuGetTFSの両方にパッケージを無視するように指示する必要があります。だからあなたは二つのことをしなければなりません。 NuGet.config最初に、ソリューションフォルダーに.tfignoreという名前のファイルを追加します(sの後にtfがないことに注意してください)。その内容は次のとおりです。

\packages

これはTFSにあなたのpackagesフォルダを無視するように伝えます。さて、あなたは と思うでしょう これもrepositories.configファイルを無視するだろう。しかしそうではありません。どうして?誰が知っている、マイクロソフトの方法は奇妙で神秘的です。実際、これは以下で概説するNuGetのものの一部だと思いますが、それが将来修正され、VSに再生成させるのではなくrepositories.configファイルを保持したい場合は、これを使用できます。

\packages
!\packages\repositories.config

それでは、.tfignoreファイルのおかげで、TFSはあなたのパッケージを無視しています。すべて問題ありませんね。 間違った、NuGetがあなたのソース管理にざっと触れていて、あなたの保留中の変更にパッケージを追加しているからです。それでは、NuGetにそれを切り取るように伝えましょう。

ソリューションフォルダのルートに.nugetというフォルダを作成します。1 それでは、NuGet.configという名前のファイルを作成し、それをこの新しいフォルダーに入れます。2。その内容は次のようになります。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <solution>
    <add key="disableSourceControlIntegration" value="true" />
  </solution>
</configuration>

そして今すぐあなたのパッケージはソース管理から外れるべきです。 NuGet.configファイルと.tfignoreファイルをソース管理に追加することを忘れないでください。

編集:問題がある場合は、packagesフォルダを削除し、その変更をチェックインしてから上記の手順を実行してください。

また編集:これは新しいバージョンのNugetでは起こらないようです。そのため、VS/TFS 2017に切り替えると、この問題は上記の問題を回避することなく解消されます。

1。ソース管理エクスプローラを使用してフォルダを追加します。ソリューションを右クリックし、[フォルダを追加]をクリックします。
2。 VS 2013を使用してこれを理解したとき、NuGet.configが.nugetフォルダーに入っていなければならないことがわかりました。ソリューションフォルダのルートにNuGet.configファイルが既にある場合でも(たとえば、あなたの会社には内部nugetフィードがあります)。しかし、コメントの中には、VS 2015のソリューションルートで問題なく動作することを示しているものがあります。個人的には、gitモードでTFSを使用するように切り替えたため、テストできません。さらに、カスタムフィードがある場合は、カスタムフィードとnuget.orgの両方をキーとしてNuget.configファイルに含めるようにしてください。そうしないと、TFSがランダムにパッケージを復元できないと判断することがあります。

477
Pharylon

上記の代替解決策は次のとおりです。

  • PackagesフォルダをTFSに追加します(ファイルやサブフォルダは含みません)。
  • パッケージフォルダーを右クリック
  • 左クリック詳細
  • クリックマント

このソリューションをTFSワークスペースごとに適用する必要があることは注目に値します。私にとっては、.tfignoreファイルを使用するよりもはるかに確実に機能しています。

このアプローチの詳細については、ブログ記事 を参照してください。インストールされたNuGetパッケージをソース管理に追加できないようにします

51
Ryan Gates

.tfignoreオプションがnuget.config設定で動作していなかったと報告している人々のためにそれは興味があるかもしれません - これらのステップはついに私のために働いた:

  1. 自分のパッケージフォルダー内のすべてを削除します
  2. TFSがそのフォルダの周囲に変更を保留していないことを確認します
  3. VSを閉じる
  4. VSを再度開き、ソリューションをリロードします - Nugetリストアを使用してパッケージを再投入します。TFSソース管理に対する変更は保留されていません。
21
Adam Stewart

ソリューションの.nugetフォルダーにnuget.configファイルを追加します。以下をnuget.configファイルに追加します。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <solution>
    <add key="disableSourceControlIntegration" value="true" />
  </solution>
</configuration>

DisableSourceControlIntegrationは、TFSバージョン管理のトリックを生み出すものです。

8

.tfignoreを機能させるには、ローカルワークスペースを使用する必要があります。 .tfignoreファイルは、無視したいファイルまたはフォルダーを含むフォルダーになければなりません。

それであなたのソリューション構造がこのように見えるなら:

\Project
   \Packages
   \OtherStuff
   foo.cs

あなたの.tfignoreファイルを\ Projectに置きます。

\Project
   \Packages
   \OtherStuff
   foo.cs
   .tfignore

あなたの場合の.tfignoreの内容は次のようになります。

\packages

ここにいくつかのドキュメントがあります。 http://msdn.Microsoft.com/library/vstudio/ms245454(v = vs.110).aspx#tfignore

7
Daniel Mann

すべてのソリューション(古いものと新しいもの)に対して、AppData\Roamingでこれを一時的にオフに設定することができます。

%AppData%\NuGet\NuGet.Configファイルで、</configuration> XMLタグの直前に以下を追加します。

<config>
  <add key="repositoryPath" value="C:\NuGetPackages" />
</config>
<solution>
  <add key="disableSourceControlIntegration" value="true" />
</solution>

...あなたが望む任意のパスを指定することができます - 重要なことはあなたのTFSワークスペースの外側にそれを置くことです!

今、あなたは二度とそのことについて心配する必要はありません。ソリューションフォルダにパッケージが含まれなくなります。すべての解決策は、代わりにあなたのカスタムパッケージの場所を使うことをデフォルトにします。

注 - これはユーザー単位の作業です。

6
Heliac

ソリューションをビルド時に復元するように設定すると、パッケージフォルダーとパッケージファイルはチェックインされますが、パッケージはチェックインされません。

2
Just TFS

私にとってうまくいった解決策は、Nuget.Configに.tfignoreの両方の設定を作成することでした。

<configuration>
  ...
  <solution>
    <add key="disableSourceControlIntegration" value="true" />
  </solution>  
  ...
</configuration>

私の.tfignoreには以下の行が含まれています。

\packages

[私はVisual Studio 2015 Update 2を使用しています]

これは理想的ではなく、現在github/nugetの未解決の問題として記録されています。

TFVC#493からパッケージを省略しやすくなりました

1
redcalx

これは私にとってビジュアルスタジオオンラインとVS2013ではあまりうまくいきませんでした。

  • [ソリューション]を右クリックし、[NuGetパッケージの復元を有効にする]をクリックします。これにより、Nuget.configファイルがソリューションに追加されます。

enter image description here

  • .tfignoreを追加してください。通常、これを解決策のルートにテキストファイルを追加し、それを検出させてから 'detected add'>右クリックを無視して除外の順に選択させることで行います。

enter image description here

  • パッケージを.tfignoreに追加し、repositories.configを含めるように指示します。

enter image description here

他のコメントからあなたのミラージュはこの時点で変わるかもしれないようです。これが私がすることです:

  • すべてのパッケージを含め、すべてチェックインします。

  • ソリューション内のすべてのパッケージを削除してからこの変更をチェックインします(これによりTFSからパッケージが削除されます)。

  • ソリューションを開き、プロジェクトにパッケージを追加するビルドを行いますが、TFSはそれらをピックアップしません。

1
David Wilton

TFSでGitを使っているなら、 "。gitignore"ファイルを追加する必要があります。これは「チームプロジェクト|設定| '無視ファイルを追加'」で行えます。次にファイルを開き、Nugetパッケージ用の組み込みignoreステートメントのコメントを外します。

TFVCを使用していて、ローカルワークスペースを設定している場合は、Gitファイルと同じフォーマットを尊重する ".tfignore"ファイルを使用できます。 "packages /"が必要だと思います。

Terjeの 答え はいつもうまくいくわけではありません。またまた私。

私がこれを永久的に解決するために見つけた唯一の方法は私のワークスペースのpackagesフォルダーを隠すことです。

例えば:

Type      Server                Local
============================================
Active    $/Work/Main           C:\Code\Main
Cloaked   $/Work/Main/Packages
0
DaveShaw

私は同じ問題を抱えていました。 /packagesは動作するはずですが、私にとってはうまくいきませんでした。 packages*.*は動作しました。

0
coding4fun