QA@IT

Visual Studio でのマスター ページの共有 (VS2010)

3961 PV

現在WEBシステムの開発の事前調査を行っていますが、マスターページの共有が
上手く出来ずに困っております。

http://msdn.microsoft.com/ja-jp/library/aa992039(v=vs.100).aspx
http://ja.softuses.com/108794

上記のURLの情報を元に、VisualStudio2005でマスタページを「リンクとして追加」
した場合は、マスターページの共有化が出来たのですが、それをVisualStudio2010で
行った場合、マスターページのコンテンツがコントロール作成エラーとなってしまいます。

デザイン画面ではコントロール作成エラーとなりますが、ビルドは正常終了し、アプリケーションも
正常に実行出来ていますが、デザインが出来ないので不便でなりません。

デザイン画面でもコントロールエラーが発生せずにマスターページを共有させる良い方法は
ないでしょうか?

どなたかご存知の方がいらっしゃいましたらご教授をお願い致します。

現在のソリューション、フォルダ構成は以下のような感じです。

 SOL001 (ソリューション)
    ・APP0001 (project)
      Site.master (link)
      APP000101.aspx (コンテンツファイル)
    ・APP0002 (project)
      Site.master (link)
      APP000201.aspx (コンテンツファイル)
    ・MPage (MasterPage project)
      Site.master
    ・Menu (Main Project)
      Default.aspx

(補足)
  IISの構成です。

  SampleWeb (Menuフォルダ:アプリケーション)
    +--- MPage (仮想フォルダ)
    +--- APP0001 (仮想フォルダ)
         +--- APP0002 (仮想フォルダ)

※Default.aspxにマスタページをリンクで追加した場合は、デザイン
 も正常に表示されますが、APP000101.aspxとAPP000201.aspx
 にマスターページをリンクして追加した場合には、デザインが正常に
 表示されません。

 ちなみにマスターページのパスも
  MasterPageFile="../MPage/Site.Master"
 に変更しています。

  • softusesのパクリ元は 「 http://stackoverflow.com/questions/474685/how-to-consolidate-asp-net-master-pages-across-applications 」 ですね。
    プロジェクトの種類は Webサイトプロジェクトですか? Webアプリケーションプロジェクトですか?
    -
  • Webアプリケーションプロジェクトです。
    VisualStudio2005の場合は問題なくリンクとして追加で正常にデザイン可能なのに2010で実現出来ないので困っています。
    -
  • Webアプリケーションの場合はファイルの追加で共有(というかリンク)したいmasterとmaster.csファイルを選択し、追加ボタン右にあるドロップダウンからリンクとして追加する。と(質問サイトに)ありますがそちらも試してますか? (「Web サイトではなく Web アプリケーション~」の部分) -
  • コメント頂きました方法で試しましたが、IISでアプリケーションとして設定しているメインプロジェクトはインクとして追加でうまく行きましたが、IISにてアsプリケー書んとして定義していないAP0001のプロジェクトでリンクとして追加した場合は、MasterPageFile=""となり、手動でリンクを修正したとしても、デザイン画面でエラーとなってしまします。これも2005では正常に表示されます。 -

回答

事象自体はVS2008でも起きました。
VS2005はためしていません。VS2005で作ったものをVS2010で開いてもだめなんでしょうか?

以下、思いついた方法を示しますがあまり検証してないのでどこまで実用に耐えられるかわかりません。
参考までに残しておきます。

Windowsは7以降です(Vistaもいけるかもしれません)。
(XPでもジャンクションがありますが試してません)

一旦APP001のSite.Masterのリンクを消しておきます。

管理者権限コマンドプロンプトで

mklink "Site.Master" "..\MPage\Site.Master"

として、シンボリックリンクを作成します。
Site.Master(作成されたシンボリックリンク)をAPP001にプロジェクトへ追加で追加します。

Site.Master.cs と Site。Master.Designer.csは以前の様にリンクとして追加で追加します。

これで一応デザインは可能なようでした。
注意点はバージョン管理ソフトとデプロイ時でしょうか。
実ファイルなってしまうか管理されないかだけですので壊したりはしないと思います。

大分不安なのでacceptは不要です。

編集 履歴 (1)
  • コメント有難うございました。また、返信が遅くなりすいませんでした。
    ローカルで開発する場合、ご紹介した抱きました方法でデザインする事を確認させて頂きました。有難うございました。IISを使用する場合は、各プロジェクトのしたにマスターページの仮想フォルダを追加する事でデザイン可能な事も確認出来ましたので、今回の質問は終了とさせて頂きます。
    -
ウォッチ

この質問への回答やコメントをメールでお知らせします。