Windows系のあれこれ

港区の SIer で Windows 系の開発に従事している SE みたいな人です。Xamarin 中心です。

VSTS で Team Foundation Version Control で Xamarin のソース管理をする際に package フォルダーを除外したい

かなりニッチな投稿です。

Visual Studio Team Services(VSTS)でソース管理を行う場合、以下の2つから選択できます。

正直 Git が今は主流だと思うのですが、ウチのチームは旧 Visual Source Safe(VSS)からの名残で Team Foundation Server(TFS) ベースの方を利用しています。

Xamarin.Forms のテンプレートで作ったプロジェクトを上記ソース管理に追加をすると、管理対象に package フォルダーを追加してしまいます。
f:id:ShunsukeKawai:20161118180510p:plain
もちろんこのチェックインからは除外することはできるのですが、永続的に対象から除外することは Visual Studio のメニューからはできなそうでした。
Xamarin が悪いのか、Visual Studio が悪いのか VSTS が悪いのか、それともほかの要因なのかわかりませんが。

チームで作業している場合、package フォルダーがソース管理されてしまうと、各作業者がビルドする時に NuGet からパッケージをダウンロードしてくる時に競合したり、読み取り専用になってるからエラーになったり、作業者が別のソースをチェックインしようとすると一緒にわんさか「こいつも変更しとるな?チェックインするけ?」と聞かれて毎回除外する必要がありとても面倒でした。

除外方法

ソリューションと同階層に以下のフォルダ/ファイルを置くだけ
・.tfignore ファイル
・.nuget フォルダ
 ・NuGet.config ファイル

.tfignore ファイルの中身

除外したいフォルダやファイルのパスを記載するだけ
今回なら

\package
NuGet.config ファイルの中身
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <solution>
    <add key="disableSourceControlIntegration" value="true" />
  </solution>
</configuration>

注意点1

Windowsエクスプローラー上だと、頭が「.(ドット)」のファイルが作れません。
そのため、適当なテキストファイルを作成してメモ帳で開く→名前を付けて保存→すべてのファイルを選択して「.tfignore」と命名して保存してやらないといけない。

注意点2

Windowsエクスプローラー上だと、頭が「.(ドット)」のフォルダーが作れません。
頭だけじゃなくお尻にも「.(ドット)」を付けてやると作れます。今回なら「.nuget.」で。