ソース管理下の Web サイト ファイル

更新 : 2007 年 11 月

ソース コード管理を行う場合、Web サイト内で使用するファイルには特別に注意を要するファイルがあります。

Web.config ファイル

Web.config ファイルはアプリケーション レベルの構成を一元的に保存するファイルのため、個々のページよりも、複数の開発者に対して同時にチェックアウトされる可能性が高いファイルです。複数の開発者が同時に同じ設定を変更しない限り、ソース管理システムのマージ機能はチェックイン プロセス時に変更を結合できます。

Web.config ファイルは手動で開いて編集できます。その場合、最初にファイルを明示的にチェックアウトするか、ファイルへの編集時に暗黙のチェックアウトを行うかのいずれかになります。これは ASP.NET ページと同様です。また、Visual Web Developer の多くのユーティリティも Web.config ファイルを変更します。たとえば、Visual Web Developer の [参照の追加] ダイアログ ボックスを使用して、クライアント プロジェクト、Web サービス、またはグローバル アセンブリ キャッシュ (GAC: Global Assembly Cache) 内のアセンブリへの参照を作成すると、新しい参照は Web.config ファイルに保存されます。ほとんどの場合、Visual Web Developer は、必要に応じて、自動的に Web.config ファイルをチェックアウトします。たとえば、Web アプリケーションに新しい参照を追加したときに Web.config ファイルがチェックアウトされていなかった場合、[参照の追加] コマンドが Web.config をチェックアウトして、参照を追加します。

ただし、Web.config ファイルに影響するすべてのプロセスが、自動的に Web.config ファイルをチェックアウトするわけではありません。アプリケーションの構成を編集する前に Web.config ファイルをチェックアウトする必要があるユーティリティは次のとおりです。

  • Web サイト管理ツール ([Web サイト] メニューの [Web サイト構成] コマンド) は Web.config ファイルを自動的にチェックアウトしません。最初に Web.config ファイルをチェックアウトしないで Web サイト管理ツールで変更を保存しようとすると、Web.config ファイルが読み取り専用であることを示すエラーが表示されます。Web サイト管理ツールを使用する前に Web.config ファイルを明示的にチェックアウトする必要があります。

  • ASP.NET MMC スナップインは、Web.config ファイルを自動的にチェックアウトしません。Web.config ファイルをチェックアウトしないで構成の変更を保存しようとすると、エラーが発生します。

Web.config ファイルの暗号化されたセクション

暗号化されたセクションを含む Web.config ファイルを使用している場合、マージを実行できません。マージ前に構成設定の暗号化を解除しておく必要があります。

Web.config ファイルのセクションの暗号化の詳細については、「保護された構成を使用した構成情報の暗号化」を参照してください。

Global.asax ファイル

Web.config と同様、Global.asax ファイルは、Web サイト全体に適用される情報が格納されるファイルで、その Web サイトのルートに置かれます。具体的には、Global.asax ファイルには、アプリケーションまたはセッションに対して発生するイベントのイベント処理コードが格納されます。一般的には、複数の開発者が Global.asax ファイルを安全にチェックアウトでき、チェックイン時の競合の解決についてはソース管理プロバイダのマージ機能に依存できます。

リソース ファイル

リソース (.resx) ファイルには、XML 形式の情報が格納されます。リソース ファイルとしてはページに対するローカル ファイルおよび Web アプリケーションに対するグローバル ファイルがあります。ローカル ページ リソース ファイルは App_LocalResources ファイルに格納され、関連付けられているページの名前に基づいた名前が使用されます。たとえば、ページ Default.aspx は、Default.aspx.resx という名前のローカル リソース ファイルを持ちます。グローバル リソース ファイルは App_GlobalResources ファイルに格納されます。グローバル リソース ファイルは、.resx ファイル拡張子を持っていれば、どんな名前でもかまいません。

ローカル リソース ファイルは、ページのチェックアウト時に自動的にはチェックアウトされません。したがって、編集前に、対応するリソース ファイルを明示的または暗黙的にチェックアウトする必要があります。グローバル リソース ファイルの操作は、ローカル リソース ファイルとほぼ同じですが、開発者間での競合がより起こりやすくなります。グローバル リソース ファイルに依存するページをチェックアウトする前に、ソース管理をチェックして、グローバル リソース ファイルがチェックアウトされていないかどうかを確認する必要があります。

どちらの場合においても、リソース ファイルは XML 形式のため、チェックイン時の競合はマージによって解決できます。

アプリケーション サービス データベース

ASP.NET メンバシップ、ロール管理、またはプロファイルを使用する場合、これらのサービスに対するアプリケーション情報はデータベースに格納されます。既定では、データベースは Web アプリケーションに対してローカルで、Web アプリケーションの App_Data フォルダ内にデータベース ファイルとして格納されます。サービスは Web.config ファイル内のエントリも必要とします。詳細については、「SQL Server 向けアプリケーション サービス データベースの作成と構成」を参照してください。

Web サイトがソース管理下にある場合、アプリケーション データをローカル データベースに格納すると、次の理由で問題が発生する可能性があります。

  • 各開発者はアプリケーションをローカルでデバッグする際、データベース ファイルをチェックアウトする必要があります。読み取り専用のデータベース ファイルを使用してアプリケーションをデバッグすることはできません。読み取り専用のデータベース ファイルは実行時エラーの原因になります。

  • データベースはソース管理リポジトリにバイナリ ファイルとして格納されます。結果、複数の開発者がデータベース ファイルをチェックアウトしている場合、ソース管理システムは変更をマージできません。したがって、各開発者のチェックインにより、前のバージョンが上書きされます。

ソース管理下にある Web アプリケーションを使用する場合、ソース管理下にない共有データベース ファイルにアプリケーション サービス データを格納することをお勧めします。たとえば、アプリケーション データ用に Microsoft SQL Server を実行する中央管理サーバーを使用できます。これにより、すべての開発者が現在のライブ データを使用します。また、データベースのバックアップ機能を使用して、アプリケーション データを管理することもできます。アプリケーション データのデータベースを選択する方法の詳細については、「SQL Server 向けアプリケーション サービス データベースの作成と構成」を参照してください。

アセンブリ ファイル

アセンブリ (.dll ファイル) を Web サイトの Bin フォルダに追加して、コード内でアセンブリを参照できます。新しいバージョンで上書きしない限り、.dll ファイルをチェックアウトする必要はありません。

複数の開発者が同時にバイナリ .dll ファイルを変更した場合、ソース管理システムはその変更をマージできません。したがって、ファイルを更新して、チェックインする場合には、複数の開発者による同一ファイルのチェックアウトを許可しないことをお勧めします。チェックアウト時に、その間、他の開発者のチェックアウトを禁止するオプションを設定できます。

クライアントまたはクラス ライブラリ プロジェクトへの参照

Web アプリケーションを操作する際、クライアントまたはクラス ライブラリ プロジェクトをソリューションに追加して、ライブラリ プロジェクト内にコンパイル可能なコンポーネントを作成できます。それから Web アプリケーション内にプロジェクト間参照を作成し、ライブラリ プロジェクトのコンパイル済み出力を参照できます。たとえば、クラス ライブラリ プロジェクトを作成する場合、プロジェクト内のユーティリティ クラスまたはカスタム コントロールのアセンブリを作成し、Web アプリケーションでそれらのアセンブリを参照します。

別のプロジェクトへの参照を作成した場合、Visual Web Developer は、そのプロジェクトにコンパイル済み出力があれば、その出力をコピーします。このため、別のプロジェクトから参照する前に、プロジェクトをビルドしておく必要があります。クライアント プロジェクトのコンパイル済み出力はソース管理下にないため、開発者は、バイナリの古いバージョンを削除したり、ソース管理下にあるバージョンをビルドしたり上書きしたりする心配がありません。

参照

概念

Web サイトのソース管理の概要

その他の技術情報

SQL Server 向けアプリケーション サービス データベースの作成と構成