TFS(2013)にpackages
フォルダーを無視させようとしています。NuGetを使用しているので、ソース管理したくないので情熱を注いでいます。
私はクローキングを試みました(動作しないようです)、私は.tfignore
ファイルを追加しようとしました-何も無視されません。多くのSubversionクライアントが行うように、TFSチームがフォルダーまたはファイルを完全に無視するオプションを追加しないのはなぜですか?
TFS(2013)にpackages
フォルダーを無視させようとしています。NuGetを使用しているので、ソース管理したくないので情熱を注いでいます。
私はクローキングを試みました(動作しないようです)、私は.tfignore
ファイルを追加しようとしました-何も無視されません。多くのSubversionクライアントが行うように、TFSチームがフォルダーまたはファイルを完全に無視するオプションを追加しないのはなぜですか?
回答:
ここでの取り決めは次のとおりです。NuGetは絶対に実行してはならないソース管理関連のこと(不正な形式、Microsoft!)を実行しようとしているため、パッケージを無視するようにNuGet と TFSの両方に指示する必要があります。したがって、2つのことを行う必要があります。
まず、という名前のファイル.tfignore
をソリューションフォルダーに追加します(のs
後にないことに注意してくださいtf
)。その内容は次のようになります。
\packages
これは、TFSにパッケージフォルダーを無視するように指示します。さて、これもファイルを無視すると思いrepositories.config
ます。しかし、そうではありません。どうして?Microsoftのやり方は奇妙で神秘的です。実際、これは以下で概説するNuGetの一部だと思いますが、将来的に修正され、repositories.config
VSに再生成させるのではなくファイルを保持したい場合は、これを使用できるはずです。
\packages
!\packages\repositories.config
では、.tfignore
ファイルのおかげで、TFSはパッケージを無視しています。すべて元気ですよね?WRONG、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
ファイルをソース管理に追加して、紛失しないようにしてください。
編集:問題が発生している場合は、パッケージフォルダーを削除し、その変更をチェックインしてから、上記の手順を実行します。
また編集:これはNugetの新しいバージョンでは発生しないようです。したがって、VS / TFS 2017に切り替えると、この問題は上記の問題を回避することなく解決するでしょう。
1。ソース管理エクスプローラーを使用してフォルダーを追加します。ソリューションを右クリックして、[フォルダを追加]、[。nuget 2 ]の順にクリックします。VS 2013を使用してこれを見つけたとき、NuGet.configは.nugetフォルダーに移動する必要があることがわかりました。ソリューションフォルダーのルートに既にNuGet.configファイルがある場合でも(たとえば、会社に内部nugetフィードがあるため)。ただし、コメントの一部は、VS 2015のソリューションルートで正常に機能することを示しています。個人的には、gitモードでTFSを使用するように切り替えたため、テストできません。さらに、カスタムフィードがある場合は、カスタムフィードとnuget.orgの両方がNuget.configファイルのキーとしてあることを確認してください。そうしないと、TFSがランダムにパッケージを復元できないと判断します。
上記の代替ソリューションは次のとおりです。
このソリューションはTFSワークスペースごとに適用する必要があることに注意してください。.tfignore
ファイルを使用するよりも、はるかに確実に機能しました。
このアプローチの詳細については、ブログ記事「TFSがインストールされている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
packages
なく、それであるはずだと思います\packages
。
AppData\Roaming
すべてのソリューション(古いものと新しいもの)に対してこれを一度だけ永久に設定できます!
あなたには%AppData%\NuGet\NuGet.Config
、ファイル、直前に以下を追加する</configuration>
XMLタグ...
<config>
<add key="repositoryPath" value="C:\NuGetPackages" />
</config>
<solution>
<add key="disableSourceControlIntegration" value="true" />
</solution>
...任意のパスを指定できます-重要なことは、TFSワークスペースの外にそれを置くことです!
今、あなたは再びそのことについて心配する必要はありません。ソリューションフォルダーにはパッケージが含まれなくなります。すべてのソリューションは、代わりにカスタムパッケージの場所をデフォルトで使用します。
注-これはユーザーごとに機能します。
ビルド時に復元するようにソリューションを設定すると、パッケージフォルダーとパッケージファイルがチェックインされますが、パッケージはチェックインされません。
TFSでGitを使用している場合は、「。gitignore」ファイルを追加する必要があります。これは、「チームプロジェクト|設定| '無視ファイルを追加'」で実行できます。次にファイルを開き、Nuget Packagesの組み込みのignoreステートメントのコメントを外します。
TFVCを使用していて、ローカルワークスペースが構成されている場合は、Gitファイルと同じ形式を尊重する「.tfignore」ファイルを使用できます。「packages /」が必要だと思います。
これは、オンラインのビジュアルスタジオやVS2013ではうまく機能しませんでした。
他のコメントから、あなたの距離はこの時点で異なるかもしれません。これが私がすることです:
パッケージを含め、すべてをチェックインします。
ソリューション内のすべてのパッケージを削除してから、この変更をチェックインします(これにより、TFSからパッケージが削除されます)
ソリューションを開いてビルドすると、プロジェクトにパッケージが追加されますが、TFSはそれらを取得しません。
私にとってうまくいった解決策は、.tfignore と次の設定の両方をNuget.Configに作成することでした。
<configuration>
...
<solution>
<add key="disableSourceControlIntegration" value="true" />
</solution>
...
</configuration>
私の.tfignoreには次の行が含まれています。
\packages
[私はVisual Studio 2015 Update 2を使用しています]
これは理想的ではなく、現在github / nugetで未解決の問題として記録されています。
Terjeの答えは、私にとって常に機能するわけではありません。しばらくは機能することもありますが、それでも、「追加」の負荷が何度も発生します。
これを恒久的に解決する唯一の方法は、ワークスペースのパッケージフォルダーをクロークすることです。
例えば:
Type Server Local
============================================
Active $/Work/Main C:\Code\Main
Cloaked $/Work/Main/Packages
同じ問題がありました。/packages
うまくいくはずですが、私にはうまくいきませんでした。packages*.*
仕事をしました。