私はTFS(2013)に私のpackages
フォルダーを無視させようとしています。私はNuGetを使っているので情熱的にソース管理したくないし、それはすごい!
私はクローキングを試してみました(うまくいかないようです)、私は.tfignore
ファイルを追加しようとしました - 何も無視されません。多くのSubversionクライアントのように、TFSチームがフォルダやファイルを永久に無視するオプションを追加しないのはなぜですか。
NuGetはソース管理関連のことを絶対にやるべきではないとしようとしているので(Microsoftは悪い形式です)、NuGet と TFSの両方にパッケージを無視するように指示する必要があります。だからあなたは二つのことをしなければなりません。 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がランダムにパッケージを復元できないと判断することがあります。
上記の代替解決策は次のとおりです。
このソリューションをTFSワークスペースごとに適用する必要があることは注目に値します。私にとっては、.tfignore
ファイルを使用するよりもはるかに確実に機能しています。
このアプローチの詳細については、ブログ記事 を参照してください。インストールされたNuGetパッケージをソース管理に追加できないようにします 。
.tfignoreオプションがnuget.config設定で動作していなかったと報告している人々のためにそれは興味があるかもしれません - これらのステップはついに私のために働いた:
ソリューションの.nugetフォルダーにnuget.configファイルを追加します。以下をnuget.configファイルに追加します。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<solution>
<add key="disableSourceControlIntegration" value="true" />
</solution>
</configuration>
DisableSourceControlIntegrationは、TFSバージョン管理のトリックを生み出すものです。
.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
すべてのソリューション(古いものと新しいもの)に対して、AppData\Roaming
でこれを一時的にオフに設定することができます。
%AppData%\NuGet\NuGet.Config
ファイルで、</configuration>
XMLタグの直前に以下を追加します。
<config>
<add key="repositoryPath" value="C:\NuGetPackages" />
</config>
<solution>
<add key="disableSourceControlIntegration" value="true" />
</solution>
...あなたが望む任意のパスを指定することができます - 重要なことはあなたのTFSワークスペースの外側にそれを置くことです!
今、あなたは二度とそのことについて心配する必要はありません。ソリューションフォルダにパッケージが含まれなくなります。すべての解決策は、代わりにあなたのカスタムパッケージの場所を使うことをデフォルトにします。
注 - これはユーザー単位の作業です。
ソリューションをビルド時に復元するように設定すると、パッケージフォルダーとパッケージファイルはチェックインされますが、パッケージはチェックインされません。
私にとってうまくいった解決策は、Nuget.Configに.tfignoreとの両方の設定を作成することでした。
<configuration>
...
<solution>
<add key="disableSourceControlIntegration" value="true" />
</solution>
...
</configuration>
私の.tfignoreには以下の行が含まれています。
\packages
[私はVisual Studio 2015 Update 2を使用しています]
これは理想的ではなく、現在github/nugetの未解決の問題として記録されています。
これは私にとってビジュアルスタジオオンラインとVS2013ではあまりうまくいきませんでした。
他のコメントからあなたのミラージュはこの時点で変わるかもしれないようです。これが私がすることです:
すべてのパッケージを含め、すべてチェックインします。
ソリューション内のすべてのパッケージを削除してからこの変更をチェックインします(これによりTFSからパッケージが削除されます)。
ソリューションを開き、プロジェクトにパッケージを追加するビルドを行いますが、TFSはそれらをピックアップしません。
TFSでGitを使っているなら、 "。gitignore"ファイルを追加する必要があります。これは「チームプロジェクト|設定| '無視ファイルを追加'」で行えます。次にファイルを開き、Nugetパッケージ用の組み込みignoreステートメントのコメントを外します。
TFVCを使用していて、ローカルワークスペースを設定している場合は、Gitファイルと同じフォーマットを尊重する ".tfignore"ファイルを使用できます。 "packages /"が必要だと思います。
Terjeの 答え はいつもうまくいくわけではありません。またまた私。
私がこれを永久的に解決するために見つけた唯一の方法は私のワークスペースのpackagesフォルダーを隠すことです。
例えば:
Type Server Local
============================================
Active $/Work/Main C:\Code\Main
Cloaked $/Work/Main/Packages
私は同じ問題を抱えていました。 /packages
は動作するはずですが、私にとってはうまくいきませんでした。 packages*.*
は動作しました。