複数の構成ファイル(app.DEV.config、app.TEST.configなど)と、正しい構成ファイルをapp.configにコピーするビルド前のイベントがあります。明らかに、構成固有のファイルはソース管理にあります---しかし現在のところApp.Configもそうであり、そうであってはなりません。
その1つのファイルをプロジェクトからではなく、ソース管理から除外するようにマークするにはどうすればよいですか。
VS 2005と2005 Team Explorerを使用しています。
複数の構成ファイル(app.DEV.config、app.TEST.configなど)と、正しい構成ファイルをapp.configにコピーするビルド前のイベントがあります。明らかに、構成固有のファイルはソース管理にあります---しかし現在のところApp.Configもそうであり、そうであってはなりません。
その1つのファイルをプロジェクトからではなく、ソース管理から除外するようにマークするにはどうすればよいですか。
VS 2005と2005 Team Explorerを使用しています。
回答:
MS Power Toolsにはチェックインポリシー(禁止パターンポリシー)があり、正規表現に対してファイル名をスクリーニングできます。参照:Microsoft Team Foundation Server Power Tools
チェックインポリシーは完全に万能というわけではありませんが、TFSが探しているもののようなユーザー定義のルールを強制するために最も近いものです。
(そして、他の人が言ったように、ファイルまたはフォルダーをクロークすることもできます。つまり、ソースコントロールに残り、チームの他のすべてのユーザーに表示されますが、クロークを解除するまでPCにコピーされません。またはファイルを削除できます。つまり、最新のものになったときに全員のPCから削除されます。ただし、これらのオプションのいずれも、そもそもそのようなファイルがソース管理に追加されないようにするものではありません)
TFS2012では簡単です。.tfignoreファイルを作成します
http://msdn.microsoft.com/en-us/library/tfs/ms245454%28v=vs.110%29.aspx#tfignore
######################################
# Ignore .cpp files in the ProjA sub-folder and all its subfolders
ProjA\*.cpp
#
# Ignore .txt files in this folder
\*.txt
#
# Ignore .xml files in this folder and all its sub-folders
*.xml
#
# Ignore all files in the Temp sub-folder
\Temp
#
# Do not ignore .dll files in this folder nor in any of its sub-folders
!*.dll
# EDIT https://msdn.microsoft.com/en-us/library/ms245454(v=vs.110).aspx#tfignore
# A filespec is recursive unless prefixed by the \ character.
ソリューションエクスプローラーでApp.configファイルを選択し、[ファイル]-> [ソース管理]-> [App.configをソース管理から除外]を選択します。
見つけるのが難しいオプションがあります:
1.ソリューションエクスプローラーでファイルを選択します。
2. [ファイル]-> [ソース管理]-> [詳細]に移動します。
そしてここにあります
留意点:ソリューションエクスプローラーでファイルを右クリックすると、「最も重要なオプション」だけが見つかります。
プロジェクトにファイルがあり、TFSでソース管理されていない場合は、SourceControlに移動して、そのファイルを削除し、プロジェクトファイルのチェックアウトを取り消します(プロジェクトからファイルを削除しようとします)上手)。次に、除外するファイルの削除をチェックインします。ソリューションエクスプローラーで、除外するファイルの横にソース管理アイコンがないことを確認します。プロジェクトファイルにはファイルがリストされているはずですが、そのファイルはソース管理下にないはずです。
覚えておいてください。他の人が最新のものになると、プロジェクトで欠落しているファイルが表示されるようになります。
TFSを使用すると、フォルダー/ファイルレベルでクローキングできます。何かがクローキングされている場合、TFSはそれを同期しようとしません(svn:ignoreのように)。
ワークスペースをセットアップするときは、TFSに無視させたいものをすべてクロークします。より詳細なハウツーはこちらです。
Visual Studio 2013(および2012)
この機能は、ファイルを選択して次の場所に移動すると利用できます。
File > Source Control > Advanced > Exclude ... from Source Control
この質問は少し前に尋ねられましたが、私が抱えていたのと同じ種類の問題に関係しています。
問題:
理由:
ビルドイベントの例:
上記では、ターゲットビルドパス(bin \ debugまたはbin \ releaseフォルダー)からプロジェクトフォルダーにファイルを移動するだけです。私の状況では、これはプロジェクトにビルドされたファイルをインストーラーに含めることができるようにするためです。インストーラーがプロジェクト出力の一部としてそれらを取得していませんでした。
修正:(私がこれを理解したとき、顔の近くで自分を蹴りつけた)
新しいビルドイベント:
私たちは皆、ビルドイベントを楽しんでいますか?上記の2つのことを行うだけで、読み取り専用属性を削除し、ファイルは読み取り専用ではなくなりました。最初に希望していたとおりにファイルをコピーします。次に、読み取り専用属性(オプション)を置き換えて、Visual StudioおよびTeam Foundationsを満足させます。
そしてはい...私はまだこれに直面して自分を蹴っています。
同様の問題があります。私のApp.configには、TFSと同期してはならない適切なデータ(ユーザー名など)が含まれています。
ASP.NETおよびAzure App Serviceにパスワードやその他の機密データをデプロイするためのベストプラクティスの記事では、この問題を回避するための適切なアプローチについて説明しています。
「appSettings」要素の「file」属性を使用して、ソース管理に追加されていない構成ファイルを参照します
TFS2012より古いバージョンがあり、.tfignore
ファイルを作成できないか、File > Source Control > Advanced > Exclude …
オプションを使用できない場合は、次のことを試してください。
TFSは、ターゲットファイルの変更を無視するようになりました。ファイルを再度編集する必要がある場合は、Visual Studioを使用しないでください。TFSは、そのファイルを保留中の変更があるファイルのリストに戻します。
ソースコントロールエクスプローラーからファイルを選択して右クリックし、そこから[名前の変更]オプションを選択するだけで、ファイル名の最後に ".exclude"を追加できます。
そして、ファイルをチェックインすることを忘れないでください。その後、ファイルがソース管理から除外されていることがわかります。