既存ソリューションへの組み込み方法
いくらカスタマイズができても、既存のプロジェクトへの組み込みができなければ利用に対して躊躇する方もいるでしょう。ここでは作成したDynamic Dataプロジェクトを既存プロジェクトに組み込む方法をご紹介します。なお、ここでの既存プロジェクトはASP.NETアプリケーションを指します。
Dynamic Dataはプロジェクトのテンプレートです。そのため、既存プロジェクトへの組み込みは以下の2つが考えられます。
- ソリューションに組み込む
既存ソリューションにDynamic Dataプロジェクトを追加し、1つのソリューションにします。
- 既存プロジェクトに組み込む
既存プロジェクト内に組み込み、1プロジェクトにまとめます。
それぞれについてご紹介します。
ソリューションに組み込む
こちらについては詳細な説明が不要かと思います。手順は以下のとおりです。
- 既存のプロジェクトを展開し、メニューバーの[ファイル]-[追加]-[既存のプロジェクト]を選択
- ダイアログで既存のDynamic Dataプロジェクトを選択し展開
以上で完了です。非常にお手軽に追加できるのがメリットとなりますが、この方法の場合下記のような課題も出てきます。
- プロジェクトが分かれているため、プロジェクトごとの認証が必要になる
- プロジェクトが分かれているため、配置時が多少煩雑になる
逆に、プロジェクトが分かれているからこそメンテナンスもしやすいというメリットもありますので、一概にこの追加方法が悪いとは言えません。
次にこの課題を解決するプロジェクトの追加方法をご紹介します。
既存プロジェクトに組み込む~WebForm編~
残念ながら、こちらの方法は泥臭い作業が必要になります。
ここでは、WebFormと、URLルーティングが関連するASP.NET MVCを既存のプロジェクトそれぞれの手順を記載します。大まかな作業の流れは以下のとおりです。
- ASP.NET WebForm、またはMVCのプロジェクトを作成
- Dynamic Dataのプロジェクトを作成
- ASP.NET WebForm、またはMVCのプロジェクトをメインに、Dynamic Dataプロジェクトをフォルダ単位でコピー
- ファイル単位での名前空間記載など、細かな修正を実施
基本的にDynamic Dataのプロジェクトを既存プロジェクトに追加する流れになるため、Web Formの場合でも、Web FormのプロジェクトにDynamic Dataプロジェクトの必要なファイルや設定を追加することになります。最初にWebFormの手順を解説し、MVCは後で補足部分を解説します。それでは、手順3から解説します。
Dynamic Dataプロジェクトをフォルダ単位でコピー
プロジェクトをそのまま追加することはできませんので、フォルダ単位でDynamic Dataプロジェクトのコピーを行います。
VS 2010を通常起動している場合はエクスプローラからソリューションエクスプローラにドラッグ&ドロップで項目を追加できます(管理者権限で起動している場合は不可)。実際に以下の項目をドラッグ&ドロップでコピーしましょう。配置場所は、プロジェクトのトップノードです。
- Dynamic Dataフォルダをすべて
- Default.aspx.cs
- Default.aspx.designer.cs
- Site.master.cs
- Site.master.designer.cs
- Default.aspx
- Site.css
- Site.master
Web Formの場合は、Default.aspx/Site.master関連のファイルの名前が競合してしまいますので、コピー前にDynamic Dataプロジェクト側でファイルをリネームしておきます(本稿ではdynamic.aspxと、dynamicSite.masterとします)。
当然コピーだけでは実行できません。これから細かな修正作業に入ります。
ファイル単位での名前空間記載などを修正
最初に参照設定にDynamic Dataで使用されている、以下の2つのDLLを参照追加します。
- System.Web.DynamicData.Design
- System.Data.Entity
次に、FieldTemplatesフォルダ内にあるManyToMany_EditField.ascx.csファイルに以下の名前空間を記載します。
using System.Web.DynamicData;
最後に、Global.asaxファイルの追記作業を実施します。WebFormの場合、Global.asax.csファイル内のDynmaicDataプロジェクトのGlobal.asax.csファイルの記述をすべてコピー&ペーストします。ペースト後の修正箇所は以下の太字部分のみです(作成したDynamic DataプロジェクトのGlobal.asax.csファイルからコピーがお手軽です)。
using System.Web.DynamicData; namespace WebFormプロジェクトの名前空間
Dynamic Dataの名前空間追加と、Dynamic Dataプロジェクトの名前空間からWebFormプロジェクトの名前空間へと修正するだけです。以上で設定完了です。作業完了すると、図4のようになります。
続いて、MVCプロジェクト内に組み込む場合の補足手順について解説します。