locked
Silverlightの基本構成 RRS feed

  • 質問

  • 初歩的な質問で失礼いたします。
    よく、ホームページ(html)の一部にFlashを組み込んで表示されているサイトを見かけます。
    http://www.toshiba.co.jp/index_j3.htm
    http://www.toyota.co.jp/
    (たとえばこんなサイトです)

    これをマイクロソフト流にhtmlにSilverlightを組み込む場合最低何が必要になってくるのでしょうか?
    VWDEを使っているのですがSilverlightのテンプレートを開くと
    色んなものが出てきてどこから手をつけてよいものやらわけがわからない状態です。

    まず
    App.xaml
    page.xaml
    そしてこれにcsファイルが付随してます。
    どちらに書けばいいのでしょうか?
    また、何で二つあるのかもよくわからないです。

    ClientBinフォルダの中に
    SilverlightApplication1.xap
    これの存在理由がまったくわからないです。

    そして、
    Default.aspx
    Default.aspx.cs
    Default.aspx.designer.cs
    このセットはASPの場合必要なのでしょうか?
    基本ベースが普通のHTMLならばまるまる削除していいのでしょうか?

    次に
    Silverlight.js
    javascriptを使わなければこれもいらないような気がしますが
    どうなのでしょうか?

    そして、
    SilverlightApplication1TestPage.aspx
    SilverlightApplication1TestPage.html
    これは・・・

    最後に
    Web.config
    このファイルはデバッグするときに必要そうですが何なのでしょうか?

    どのファイルから手をつければいいかわからない状態です。
    よろしくお願いします。

    2009年2月28日 13:54

回答

  • 複数に分けて返答します。

    >App.xaml
    >page.xaml
    >そしてこれにcsファイルが付随してます。
    >どちらに書けばいいのでしょうか?
    >また、何で二つあるのかもよくわからないです。

    アプリケーション モデルとプログラミング モデル
    http://msdn.microsoft.com/ja-jp/library/cc903934(VS.95).aspx

    アプリケーションモデル(詳細)
    http://msdn.microsoft.com/ja-jp/library/cc872869(VS.95).aspx

    あたりが参考になると思います。

    ボタンをクリックした回数を表示する、という単純なアプリケーションのサンプルとともに、疑問を解決したいと思います。
    ここから先は、SilverlightApplication01というものを作った前提で話をします。

    App.xaml は、主にアプリケーション全域で利用するリソースを宣言するのに利用します。
    Visual Studio 2008が生成しているソースコードの既定値では、次のような内容になっています。
    <Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"   
                 x:Class="SilverlightApplication01.App" 
                 > 
        <Application.Resources> 
              
        </Application.Resources> 
    </Application> 
     

    App.xaml.cs は、App.xamlの分離コードで、主にSilverlightアプリケーションの起動と終了、例外処理についてのロジックが記述されています。
    using System;  
    using System.Collections.Generic;  
    using System.Linq;  
    using System.Net;  
    using System.Windows;  
    using System.Windows.Controls;  
    using System.Windows.Documents;  
    using System.Windows.Input;  
    using System.Windows.Media;  
    using System.Windows.Media.Animation;  
    using System.Windows.Shapes;  
     
    namespace SilverlightApplication01  
    {  
        public partial class App : Application  
        {  
     
            public App()  
            {  
                this.Startup += this.Application_Startup;  
                this.Exit += this.Application_Exit;  
                this.UnhandledException += this.Application_UnhandledException;  
     
                InitializeComponent();  
            }  
     
            private void Application_Startup(object sender, StartupEventArgs e)  
            {  
                this.RootVisual = new Page();  
            }  
     
            private void Application_Exit(object sender, EventArgs e)  
            {  
     
            }  
            private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)  
            {  
                // アプリケーションがデバッガの外側で実行されている場合、ブラウザの  
                // 例外メカニズムによって例外が報告されます。これにより、IE ではステータス バーに  
                // 黄色の通知アイコンが表示され、Firefox にはスクリプト エラーが表示されます。  
                if (!System.Diagnostics.Debugger.IsAttached)  
                {  
     
                    // メモ : これにより、アプリケーションは例外がスローされた後も実行され続け、例外は  
                    // ハンドルされません。   
                    // 実稼動アプリケーションでは、このエラー処理は、Web サイトにエラーを報告し、  
                    // アプリケーションを停止させるものに置換される必要があります。  
                    e.Handled = true;  
                    Deployment.Current.Dispatcher.BeginInvoke(delegate { ReportErrorToDOM(e); });  
                }  
            }  
            private void ReportErrorToDOM(ApplicationUnhandledExceptionEventArgs e)  
            {  
                try 
                {  
                    string errorMsg = e.ExceptionObject.Message + e.ExceptionObject.StackTrace;  
                    errorMsg = errorMsg.Replace('"', '\'').Replace("\r\n", @"\n");
                    System.Windows.Browser.HtmlPage.Window.Eval("throw new Error(\"Unhandled Error in Silverlight 2 Application " + errorMsg + "\");");  
                }  
                catch (Exception)  
                {  
                }  
            }  
        }  
    }  
     

    Page.xamlは、Silverlightの画面を構築する際に利用しているXAMLファイルです。
    次の内容では、レイアウト用のグリッドを2行に分けて、上にTextBlock、下にButtonを配置しています。
    x:NameはXAML上のオブジェクトを識別するための名前です。

    <UserControl x:Class="SilverlightApplication01.Page" 
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"   
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"   
        Width="400" Height="300">  
        <Grid x:Name="LayoutRoot" Background="White" xml:lang="ja-jp">  
            <Grid.RowDefinitions> 
                <RowDefinition /> 
                <RowDefinition /> 
            </Grid.RowDefinitions> 
            <TextBlock x:Name="myText" FontSize="48" Text="aaa" Grid.Row="0"/>  
            <Button x:Name="myButton" Content="実行" FontSize="48" Grid.Row="1"/>  
        </Grid> 
    </UserControl> 
     

    Page.xaml.csは、Page.xamlの分離コードで、画面のロジックを記述します。
    myButton.Click はボタンが押された時のイベント名です。C#の構文を使って、クリックされた時のイベントハンドラmyButton_Clickを指定しています。このあたりは、
    myButton.Click +
    と入力すると、残りはインテリセンスで簡単に入力できます。

    using System;  
    using System.Collections.Generic;  
    using System.Linq;  
    using System.Net;  
    using System.Windows;  
    using System.Windows.Controls;  
    using System.Windows.Documents;  
    using System.Windows.Input;  
    using System.Windows.Media;  
    using System.Windows.Media.Animation;  
    using System.Windows.Shapes;  
     
    namespace SilverlightApplication01  
    {  
        public partial class Page : UserControl  
        {  
            private int m_Count=0;  
            public Page()  
            {  
                InitializeComponent();  
                myText.Text ="";  
                myButton.Click += new RoutedEventHandler(myButton_Click);  
            }  
     
            void myButton_Click(object sender, RoutedEventArgs e)  
            {  
                m_Count++;  
                myText.Text = string.Format ("{0}回目のクリック",m_Count );  
            }  
        }  
    }  
     

    このプロジェクトをビルドすると、SilverlightApplication01.WebプロジェクトのClientBinフォルダに
    SilverlightApplication01.xap
    というパッケージファイルが生成されます。Silverlightプラグインからこのパッケージファイルを読み込む点については、次に書きます。


    この投稿は現状のまま何の保証もなく掲載しているものであり、何らかの権利を許諾するものでもありません。コミュニティにおけるマイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。詳しくは http://www.microsoft.com/japan/communities/msp.mspx をご覧ください。
    • 回答としてマーク 無限極限 2009年3月10日 14:14
    • 回答としてマークされていない 無限極限 2009年3月19日 16:45
    • 回答としてマーク 無限極限 2009年3月20日 13:25
    2009年3月2日 5:53
  • 次は配置の話です。

    Web ページへの Silverlight の統合
    http://msdn.microsoft.com/ja-jp/library/cc838145(VS.95).aspx
    を読まれることをお勧めします。

    >Default.aspx
    >Default.aspx.cs
    >Default.aspx.designer.cs
    >このセットはASPの場合必要なのでしょうか?
    >基本ベースが普通のHTMLならばまるまる削除していいのでしょうか?
    単純にSilverlightのアプリケーションをホストするだけならば、削除しても影響ありません。
    なぜなら、これらのファイルは、実際のところ、Silverlightに関する部分をまったく記述していないからです。独自のWebサイトをASP.NETを使って開発する場合は、ここから拡張するといいでしょう。

    >Silverlight.js
    >javascriptを使わなければこれもいらないような気がしますが
    >どうなのでしょうか?

    はい、なくても大丈夫です。
    <object>タグを使って、Silverlightアプリケーションを読み込む場合、
    <script type="text/javascript" src="Silverlight.js"></script> で指定されているSilverlight.jsは必須ではありません。

    Silverlight.jsを使う場合の詳細は、次が参考になると思います。
    JavaScriptを使ってアプリケーションを読み込む場合は、<object>タグよりも記述することが増えますが、Silverlightランタイムのインストールの有無やインストールページへの誘導、インストールを待ってブラウザの再読み込みをするなど、アプリケーションの起動までの体験をより便利にできます。

    方法 : JavaScript を使用して Web ページに Silverlight を追加する
    http://msdn.microsoft.com/ja-jp/library/cc265155(VS.95).aspx

    >SilverlightApplication1TestPage.aspx
    >SilverlightApplication1TestPage.html
    >これは・・・

    .aspxは、ASP.NETのSilverlightコントロールを使って、Silverlightのアプリケーションを読み込む場合に使います。
    .htmlは、HTMLの<object>タグを使って、Silverlightのアプリケーションを読み込みます。

    違いを見てみましょう。

    SiverlightApplication01TestPage.aspx
    こちらは、動的なページで、<asp:Silverlight>というサーバーサイドのタグで、Silverlightアプリケーションの読み込みを行っています。
    <asp:ScriptManager>との併用が必要です。

    ASP.NET Silverlightサーバーコントロールの詳細については、
    http://msdn.microsoft.com/ja-jp/library/cc838274(VS.95).aspx をご覧ください。

    <%@ Page Language="C#" AutoEventWireup="true" %> 
     
    <%@ Register Assembly="System.Web.Silverlight" Namespace="System.Web.UI.SilverlightControls" 
        TagPrefix="asp" %> 
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
     
    <html xmlns="http://www.w3.org/1999/xhtml" style="height:100%;">  
    <head runat="server">  
        <title>SilverlightApplication01</title> 
    </head> 
    <body style="height:100%;margin:0;">  
        <form id="form1" runat="server" style="height:100%;">  
            <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> 
            <div  style="height:100%;">  
                <asp:Silverlight ID="Xaml1" runat="server" Source="~/ClientBin/SilverlightApplication01.xap" MinimumVersion="2.0.31005.0" Width="100%" Height="100%" /> 
            </div> 
        </form> 
    </body> 
    </html> 

    このaspxがブラウザから読み込まれると、次のようなHTMLに変わります。これは、ASP.NETによって動的に生成されたものです。
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml" style="height:100%;">  
    <head><title>  
        SilverlightApplication01  
    </title></head>  
    <body style="height:100%;margin:0;">  
        <form name="form1" method="post" action="SilverlightApplication01TestPage.aspx" id="form1" style="height:100%;">  
    <div> 
    <input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" /> 
    <input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" /> 
    <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJOTM0MTA3NzQxZGS314fbDwTdYDmyHBK7iMlQNgPHNw==" /> 
    </div> 
     
    <script type="text/javascript">  
    //<![CDATA[
    var theForm = document.forms['form1'];
    if (!theForm) {
        theForm = document.form1;
    }
    function __doPostBack(eventTarget, eventArgument) {
        if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
            theForm.__EVENTTARGET.value = eventTarget;
            theForm.__EVENTARGUMENT.value = eventArgument;
            theForm.submit();
        }
    }
    //]]> 
    </script> 
     
    <script src="/WebResource.axd?d=ZC3TI3klXzrDcbA4fXqf_Q2&amp;t=633528109956801634" type="text/javascript"></script> 
     
    <script src="/ScriptResource.axd?d=9AGKo7DtYYsATsQwc6Zuyxto36AEPTv2wBvNHR5tjvQNOaxLJoRfmELtK7ZSbW-oXY7-Qwci5pDbMfk5zrmwPHPBlW6ZS2TR1dBDoAoPqoc1&amp;t=ffffffff93ac56fc" type="text/javascript"></script> 
    <script type="text/javascript">  
    //<![CDATA[
    if (typeof(Sys) === 'undefined') throw new Error('ASP.NET Ajax クライアント側フレームワークを読み込めませんでした。');
    //]]> 
    </script> 
     
    <script src="/ScriptResource.axd?d=9AGKo7DtYYsATsQwc6Zuyxto36AEPTv2wBvNHR5tjvQNOaxLJoRfmELtK7ZSbW-otjl1pFBJXEn4ml_u8MdlMY7zWkEJtrS0xYKnTDV7iPffT4ltYkkmBr5x3MMitQi30&amp;t=ffffffff93ac56fc" type="text/javascript"></script> 
    <script src="/ScriptResource.axd?d=rqPsLHzWwTi16UnvC81BOhu8Y4JsyLf9Yai6xtxk29NvVhGtV-Q0KA6NONw6StIc2JCmfg3VtcptuuY7TO2iFQ2&amp;t=5d6b1361" type="text/javascript"></script> 
            <script type="text/javascript">  
    //<![CDATA[
    Sys.WebForms.PageRequestManager._initialize('ScriptManager1', document.getElementById('form1'));
    Sys.WebForms.PageRequestManager.getInstance()._updateControls([], [], [], 90);
    //]]> 
    </script> 
     
            <div  style="height:100%;">  
                <span id="Xaml1_parent"></span> 
    <script type="text/javascript">  
    //<![CDATA[
    Sys.UI.Silverlight.Control.createObject('Xaml1_parent', '<object type="application/x-silverlight-2" data="data:application/x-silverlight-2," id="Xaml1" style="height:100%;width:100%;">\r\n\t<param name="MinRuntimeVersion" value="2.0.31005.0">\r\n\r\n\t</param><a href="http://go2.microsoft.com/fwlink/?LinkID=114576&amp;v=2.0"><img src="http://go2.microsoft.com/fwlink/?LinkID=108181" alt="Microsoft Silverlight を取得" style="border-width:0;" /></a>\r\n</object>'); originalAttribute="href" originalPath=""http://go2.microsoft.com/fwlink/?LinkID=114576&amp;v=2.0"><img src="http://go2.microsoft.com/fwlink/?LinkID=108181" alt="Microsoft Silverlight を取得" style="border-width:0;" /></a>\r\n</object>');"
    //]]> 
    </script> 
     
            </div> 
          
     
    <script type="text/javascript">  
    //<![CDATA[
    Sys.Application.initialize();
    Sys.Application.add_init(function() {
        $create(Sys.UI.Silverlight.Control, {"source":"ClientBin/SilverlightApplication01.xap"}, null, null, $get("Xaml1_parent"));
    });
    //]]> 
    </script> 
    </form> 
    </body> 
    </html> 

    SiverlightApplication01TestPage.html

    こちらは次のような静的なHTMLです。
    onSilverlightErrorというJavaScriptのメソッドは、Silverlight側で例外が発生すると呼び出されます。
    <object>タグでSilverlightのアプリケーションを読み込んでいますが、Silverlightランタイムがインストールされていないブラウザの場合、<a>タグにフォールバックして、プラグインのインストーラーURLへのリンクを表示します。
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml" > 
    <!-- saved from url=(0014)about:internet --> 
    <head> 
        <title>SilverlightApplication01</title> 
     
        <style type="text/css">  
        html, body {  
            height: 100%;  
            overflow: auto;  
        }  
        body {  
            padding: 0;  
            margin: 0;  
        }  
        #silverlightControlHost {  
            height: 100%;  
        }  
        </style> 
     
        <script type="text/javascript" src="Silverlight.js"></script> 
        <script type="text/javascript">  
            function onSilverlightError(sender, args) {  
              
                var appSource = "";  
                if (sender != null && sender != 0) {  
                    appSource = sender.getHost().Source;  
                }   
                var errorType = args.ErrorType;  
                var iErrorCode = args.ErrorCode;  
                  
                var errMsg = "Unhandled Error in Silverlight 2 Application " +  appSource + "\n" ;  
     
                errMsg += "Code: "+ iErrorCode + "    \n";  
                errMsg += "Category: " + errorType + "       \n";  
                errMsg += "Message: " + args.ErrorMessage + "     \n";  
     
                if (errorType == "ParserError")  
                {  
                    errMsg += "File: " + args.xamlFile + "     \n";  
                    errMsg += "Line: " + args.lineNumber + "     \n";  
                    errMsg += "Position: " + args.charPosition + "     \n";  
                }  
                else if (errorType == "RuntimeError")  
                {             
                    if (args.lineNumber != 0)  
                    {  
                        errMsg += "Line: " + args.lineNumber + "     \n";  
                        errMsg += "Position: " +  args.charPosition + "     \n";  
                    }  
                    errMsg += "MethodName: " + args.methodName + "     \n";  
                }  
     
                // alert(errMsg);  
                throw new Error(errMsg);  
            }  
        </script> 
    </head> 
     
    <body> 
        <!-- Runtime errors from Silverlight will be displayed here.  
        This will contain debugging information and should be removed or hidden when debugging is completed --> 
        <div id='errorLocation' style="font-size: small;color: Gray;"></div> 
     
        <div id="silverlightControlHost">  
            <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">  
                <param name="source" value="ClientBin/SilverlightApplication01.xap"/>  
                <param name="onerror" value="onSilverlightError" /> 
                <param name="background" value="white" /> 
                <param name="minRuntimeVersion" value="2.0.31005.0" /> 
                <param name="autoUpgrade" value="true" /> 
                <href="http://go.microsoft.com/fwlink/?LinkID=124807" style="text-decoration: none;">  
                    <img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none"/>  
                </a> 
            </object> 
            <iframe style='visibility:hidden;height:0;width:0;border:0px'></iframe> 
        </div> 
    </body> 
    </html> 
     


    この投稿は現状のまま何の保証もなく掲載しているものであり、何らかの権利を許諾するものでもありません。コミュニティにおけるマイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。詳しくは http://www.microsoft.com/japan/communities/msp.mspx をご覧ください。
    • 回答としてマーク 無限極限 2009年3月20日 13:25
    2009年3月2日 6:54
  • >Web.config
    >このファイルはデバッグするときに必要そうですが何なのでしょうか?

    Visual Studio 2008/Visual Web Developer 2008 Express Editionにおいて、Webプロジェクトのデバッグ実行において、テスト用のIIS/ASP.NETサーバーが起動されます。このサーバーの構成をWeb.configで行っていますが、完成したアプリケーションを展開用のIISに配置する際にも利用できます。

    そんなわけで、Web.configは、IISの構成用のファイルになっています。
    IIS 7の設定用スキーマ情報は、http://msdn.microsoft.com/ja-jp/library/aa347559(en-us).aspx に詳細があります。ここでは解説を省略します。

    <?xml version="1.0"?>     
    <configuration>    
        <configSections>    
            <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">     
                <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">     
                    <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>     
                    <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">     
                        <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere"/>     
                        <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>     
                        <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>     
                        <section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>     
                    </sectionGroup>    
                </sectionGroup>    
            </sectionGroup>    
        </configSections>    
        <appSettings/>    
        <connectionStrings/>    
        <system.web>    
            <!--      
                デバッグ シンボルをコンパイルされたページに挿入するに     
                は、compilation debug="true" に設定します。この設     
                定はパフォーマンスに影響するため、開発時のみこの値     
                を true に設定してください。     
            -->    
            <compilation debug="true">     
                <assemblies>    
                    <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>     
                    <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>     
                    <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>     
                    <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>     
                </assemblies>    
            </compilation>    
            <!--     
                <authentication> セクションは、ユーザーを識別するため     
                に、ASP.NET で使用されるセキュリティ認証モードの構成     
                を有効にします。-->    
            <authentication mode="Windows"/>     
            <!--     
                <customErrors> セクションは、要求の実行中にハンドル     
                されていないエラーが発生した場合の処理方法の構成を     
                有効にします。具体的には、開発者が HTML エラー ペ     
                ージをエラーのスタック トレースの代わりに表示するように構     
                成することを可能にします。     
        
            <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">     
                <error statusCode="403" redirect="NoAccess.htm" />    
                <error statusCode="404" redirect="FileNotFound.htm" />    
            </customErrors>    
            -->    
            <pages>    
                <controls>    
                    <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>     
                    <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>     
                </controls>    
            </pages>    
            <httpHandlers>    
                <remove verb="*" path="*.asmx"/>     
                <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>     
                <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>     
                <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/>     
            </httpHandlers>    
            <httpModules>    
                <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>     
            </httpModules>    
        </system.web>    
        <system.codedom>    
            <compilers>    
                <compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">     
                    <providerOption name="CompilerVersion" value="v3.5"/>     
                    <providerOption name="WarnAsError" value="false"/>     
                </compiler>    
            </compilers>    
        </system.codedom>    
        <!--      
            system.webServer セクションは、Internet Information Services 7.0 で ASP.NET AJAX を     
            実行するために必要です。以前のバージョンの IIS では不要です。     
        -->    
        <system.webServer>    
            <validation validateIntegratedModeConfiguration="false"/>     
            <modules>    
                <remove name="ScriptModule"/>     
                <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>     
            </modules>    
            <handlers>    
                <remove name="WebServiceHandlerFactory-Integrated"/>     
                <remove name="ScriptHandlerFactory"/>     
                <remove name="ScriptHandlerFactoryAppServices"/>     
                <remove name="ScriptResource"/>     
                <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>     
                <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>     
                <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>     
            </handlers>    
        </system.webServer>    
        <runtime>    
            <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">     
                <dependentAssembly>    
                    <assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/>     
                    <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>     
                </dependentAssembly>    
                <dependentAssembly>    
                    <assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35"/>     
                    <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>     
                </dependentAssembly>    
            </assemblyBinding>    
        </runtime>    
    </configuration> 

    なお、静的なHTMLを使ってSilverlightアプリケーションをホストする場合、ここまでの設定は不要です。
    最低限、WebサーバーのMIME Typeとして、
    .xap    application/x-silverlight-app
    .xaml    application/xaml+xml
    の設定がなされていれば、HTMLと.xapファイルをサーバー側に配置するだけで大丈夫です。


    この投稿は現状のまま何の保証もなく掲載しているものであり、何らかの権利を許諾するものでもありません。コミュニティにおけるマイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。詳しくは http://www.microsoft.com/japan/communities/msp.mspx をご覧ください。
    • 回答としてマーク 無限極限 2009年3月20日 13:25
    2009年3月2日 7:01
  • 無限極限さん、

    書き込みが役立ったようで、よかったです。
    また何かあれば、お気軽に投稿してください。

    よろしくお願いします。
    この投稿は現状のまま何の保証もなく掲載しているものであり、何らかの権利を許諾するものでもありません。コミュニティにおけるマイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。詳しくは http://www.microsoft.com/japan/communities/msp.mspx をご覧ください。
    • 回答としてマーク 無限極限 2009年3月20日 13:25
    2009年3月11日 9:58
  •  こんにちは。くろのと申します。遅レスですが私も少しレスさせていただきます。

    手前味噌ですが、わたしの書いた最近の記事で一つのHTML内でAdobe FlexとMicrosoft Silverlightアプリケーションを同時に表示しています。
    http://www.atmarkit.co.jp/fwcr/rensai2/ria03/01.html

    大西さんがすでに詳細にレスされていますが、大まかにSilverlight のWebへの配置までの手順はだいたい以下のようになります。大西さんとアプリ開発の部分の説明がちょっと違いますが、

    ・Silverlightアプリケーションを作成する
    - Silverlightアプリケーションで最初に作られるファイル群は基本手を加えない。ほっておく。なので慣れるまで中身を知らなくても良い。
    (他に知らなくてはならないことがとても多いので、こまかいことはまずは後回し。かつ開発者全員はぶっちゃけ知らなくてもいい)
    (この部分はクライアント基盤や特殊な初期化処理などを記述すべきところかと私は考えています)
    ーなのでApp.xaml、App.xaml.cs、Page.xaml.csは何も手を加えない。
    ーPage.xamlに作るアプリのいちばんルートになるアプリのXAMLを呼び出すタグを1行書く。
    (StackPanelとそれで囲まれた1行のタグで構成される。その1行が「いちばんルートになるアプリのXAML」。Gridはウザイので使わない;;)
    -以後、そのXAMLとそれに関するコードビハインドで構成されるSilverlightアプリをガンガン開発する(以後アプリ開発に関しては略)

    ・Silverlightプロジェクトと一緒に作成されるWebプロジェクトのHTMLのソースを覗く。
    するとHTMLにSilverlightを埋め込むにはobjectタグでXAPを呼んでるだけなことがわかる。
    XAP:アプリを圧縮してまとめてしまったもの。XAMLやDLLが入っている。勝手に作られる。
    ・このobjectタグ周辺のコードとXAPをWebサイトへの配置を担当している人に渡す
    ・Silverlightの自動検知はやってもいいですが、Flash Playerなどと同様に、ページの下の方にSilverlightのアイコンとダウンロードページへのリンクをはっつけておいてもよいでしょう。

    記事にソースが付いてるので、解説はないですが、上記のPage.xamlからコードを追っていけばアプリの内部構造も簡単に理解できるかと思います。

    どちらかというと構造という点では、Silverlightそのものの構造(大西さん解説部分)はアーキテクトが把握しておき、デベロッパはアプリケーション自体の構造(どういうCSファイルにどういうコードを書けばいいか)の方が重要かと思います。
    (記事の例は非常にシンプルなアーキテクチャで作成しています。ちょっと基盤を増強すれば中規模案件くらいまではいけると思いますが。)
    • 回答としてマーク 無限極限 2009年3月20日 13:25
    2009年3月13日 6:52
  • 無限極限 の発言:

    VCSEで新規作成の時にWPFブラウザアプリケーションを選ぶと
    画面左側にボタンやテキストボックスなどのツールメニューが表示され
    右下にプロパティを変更できる枠が出てきますが
    VWDEの場合どちらとも表示されないのはなぜなのでしょうか?
    あればもっと作業がしやすくなると思うのですが
    それとも何か設定を変更しなければいけないのでしょうか?

    無償の VWD では、できることが限られます。→機能比較表

    無限極限 の発言:

    また、組んでインターネットで公開する場合ソースの中身は
    つまりxapファイルは簡単に解析されてしまうものなのでしょうか?
    それともよっぽど手の込んだことをしないと容易には
    わからないものなのでしょうか?

    .NET framework が作る .exe ファイルは、マシン語ではなく MSIL という共通言語です。これは、逆アセンブルすることで、簡単に C# などに変換できます。

    Standard か Professional Edition から、難読化ツールのお試し版がついてきます。

    しかし、解析しようと思えばマシン語から解析することも可能なので、配布先、機密度などとの相談でしょう。


    Jitta@わんくま同盟
    • 回答としてマーク 無限極限 2009年3月20日 13:25
    2009年3月16日 14:19
  • VCSW は、Visual Studio C++ Standard Edition のことでしょうか?4文字省略語に拒否反応が・・・(^-^;

    Standard には、VWD の機能は含まれます。VWD をインストールする必要はないと思いますよ。
    Jitta@わんくま同盟
    • 回答としてマーク 無限極限 2009年3月20日 13:25
    2009年3月19日 6:52
  •  
    無限極限 の発言:

     誤記です。すいません。
    × VCSW
    ○ VCSE(Visual C# 2008 Express Edition)

    それと、質問が伝わりづらい文章だったようで
    VWDが欲しいというよりは
    作業でxaml画面のコントロールの例えばボタンをWクリックしたときに
    csファイルにボタンをクリックしたときののメッソド(?という呼び方でしたっけ)が出てくる
    普通のプログラムを組むときに備わっている機能や
    画面左側にツールボックスが表示されていたり
    コントロールを選択したら右側にプロパティ編集画面が出てきたりすれば
    作業するのに便利だと思いそういった機能が
    Expression Blend 2
    にあるのもしれないと思い僕の環境でも入れても大丈夫なのかと質問さえて頂いたしだいです。



    XAML の編集でしたら、Visual Studio ではデザイナを編集することはできないようです。Professional Edition でもデザイナの方へはコントロールをドラッグできず、XML エディタの方へならドラッグできました。

    Silverlight アプリケーションの開発に、Visual C# 2008 Express Edition は、必要ありません。Visual Web Developer 2008 Express Edition SP1 があれば十分です。デザイナでの編集には、Expression のどれかのエディションが必要になります。


    Jitta@わんくま同盟
    • 回答としてマーク 無限極限 2009年3月20日 13:25
    2009年3月20日 12:11
  • 無限極限 の発言:

     Jittaさん。返信ありがとうございます。
    Visual Web Developer 2008 Express Editionで
    ツールボックスが出てきたり
    デザイナ(xaml)のプロパティが画面右下で編集できるようになれば便利なんですが
    それができないかと質問させて頂いたしだいです。

    ああ、ごめんなさい。有償版でもできないので、たぶんできない、の意図でした。


    無限極限 の発言:

    ちなみにExpression Blend 2をインストールしてみましたが
    デザイナの編集はものすごく見栄えが良くて作業しやすいのですが
    csファイルの編集はできないようで開くとVWDEが起動してしまいます。

    はい、そういう仕様です。

    確か、Expression 発表前のラウンド テーブルで指摘したことなのですが、「デザイナーとディベロッパーの分業といわれるが、それは進んでいるのか。どのようなマーケティング調査をしたのか」と、問いました。十分な市場調査をした上での仕様だと伺っています。まぁ、その「市場」に日本(というか、北米以外)が入っていたかどうかは不明ですが;) そのようなわけで、開発者がデザイナーを兼ねる場合は、使いにくいと思います。


    Jitta@わんくま同盟
    • 回答としてマーク 無限極限 2009年3月20日 13:25
    2009年3月20日 12:58

すべての返信

  • 複数に分けて返答します。

    >App.xaml
    >page.xaml
    >そしてこれにcsファイルが付随してます。
    >どちらに書けばいいのでしょうか?
    >また、何で二つあるのかもよくわからないです。

    アプリケーション モデルとプログラミング モデル
    http://msdn.microsoft.com/ja-jp/library/cc903934(VS.95).aspx

    アプリケーションモデル(詳細)
    http://msdn.microsoft.com/ja-jp/library/cc872869(VS.95).aspx

    あたりが参考になると思います。

    ボタンをクリックした回数を表示する、という単純なアプリケーションのサンプルとともに、疑問を解決したいと思います。
    ここから先は、SilverlightApplication01というものを作った前提で話をします。

    App.xaml は、主にアプリケーション全域で利用するリソースを宣言するのに利用します。
    Visual Studio 2008が生成しているソースコードの既定値では、次のような内容になっています。
    <Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"   
                 x:Class="SilverlightApplication01.App" 
                 > 
        <Application.Resources> 
              
        </Application.Resources> 
    </Application> 
     

    App.xaml.cs は、App.xamlの分離コードで、主にSilverlightアプリケーションの起動と終了、例外処理についてのロジックが記述されています。
    using System;  
    using System.Collections.Generic;  
    using System.Linq;  
    using System.Net;  
    using System.Windows;  
    using System.Windows.Controls;  
    using System.Windows.Documents;  
    using System.Windows.Input;  
    using System.Windows.Media;  
    using System.Windows.Media.Animation;  
    using System.Windows.Shapes;  
     
    namespace SilverlightApplication01  
    {  
        public partial class App : Application  
        {  
     
            public App()  
            {  
                this.Startup += this.Application_Startup;  
                this.Exit += this.Application_Exit;  
                this.UnhandledException += this.Application_UnhandledException;  
     
                InitializeComponent();  
            }  
     
            private void Application_Startup(object sender, StartupEventArgs e)  
            {  
                this.RootVisual = new Page();  
            }  
     
            private void Application_Exit(object sender, EventArgs e)  
            {  
     
            }  
            private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)  
            {  
                // アプリケーションがデバッガの外側で実行されている場合、ブラウザの  
                // 例外メカニズムによって例外が報告されます。これにより、IE ではステータス バーに  
                // 黄色の通知アイコンが表示され、Firefox にはスクリプト エラーが表示されます。  
                if (!System.Diagnostics.Debugger.IsAttached)  
                {  
     
                    // メモ : これにより、アプリケーションは例外がスローされた後も実行され続け、例外は  
                    // ハンドルされません。   
                    // 実稼動アプリケーションでは、このエラー処理は、Web サイトにエラーを報告し、  
                    // アプリケーションを停止させるものに置換される必要があります。  
                    e.Handled = true;  
                    Deployment.Current.Dispatcher.BeginInvoke(delegate { ReportErrorToDOM(e); });  
                }  
            }  
            private void ReportErrorToDOM(ApplicationUnhandledExceptionEventArgs e)  
            {  
                try 
                {  
                    string errorMsg = e.ExceptionObject.Message + e.ExceptionObject.StackTrace;  
                    errorMsg = errorMsg.Replace('"', '\'').Replace("\r\n", @"\n");
                    System.Windows.Browser.HtmlPage.Window.Eval("throw new Error(\"Unhandled Error in Silverlight 2 Application " + errorMsg + "\");");  
                }  
                catch (Exception)  
                {  
                }  
            }  
        }  
    }  
     

    Page.xamlは、Silverlightの画面を構築する際に利用しているXAMLファイルです。
    次の内容では、レイアウト用のグリッドを2行に分けて、上にTextBlock、下にButtonを配置しています。
    x:NameはXAML上のオブジェクトを識別するための名前です。

    <UserControl x:Class="SilverlightApplication01.Page" 
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"   
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"   
        Width="400" Height="300">  
        <Grid x:Name="LayoutRoot" Background="White" xml:lang="ja-jp">  
            <Grid.RowDefinitions> 
                <RowDefinition /> 
                <RowDefinition /> 
            </Grid.RowDefinitions> 
            <TextBlock x:Name="myText" FontSize="48" Text="aaa" Grid.Row="0"/>  
            <Button x:Name="myButton" Content="実行" FontSize="48" Grid.Row="1"/>  
        </Grid> 
    </UserControl> 
     

    Page.xaml.csは、Page.xamlの分離コードで、画面のロジックを記述します。
    myButton.Click はボタンが押された時のイベント名です。C#の構文を使って、クリックされた時のイベントハンドラmyButton_Clickを指定しています。このあたりは、
    myButton.Click +
    と入力すると、残りはインテリセンスで簡単に入力できます。

    using System;  
    using System.Collections.Generic;  
    using System.Linq;  
    using System.Net;  
    using System.Windows;  
    using System.Windows.Controls;  
    using System.Windows.Documents;  
    using System.Windows.Input;  
    using System.Windows.Media;  
    using System.Windows.Media.Animation;  
    using System.Windows.Shapes;  
     
    namespace SilverlightApplication01  
    {  
        public partial class Page : UserControl  
        {  
            private int m_Count=0;  
            public Page()  
            {  
                InitializeComponent();  
                myText.Text ="";  
                myButton.Click += new RoutedEventHandler(myButton_Click);  
            }  
     
            void myButton_Click(object sender, RoutedEventArgs e)  
            {  
                m_Count++;  
                myText.Text = string.Format ("{0}回目のクリック",m_Count );  
            }  
        }  
    }  
     

    このプロジェクトをビルドすると、SilverlightApplication01.WebプロジェクトのClientBinフォルダに
    SilverlightApplication01.xap
    というパッケージファイルが生成されます。Silverlightプラグインからこのパッケージファイルを読み込む点については、次に書きます。


    この投稿は現状のまま何の保証もなく掲載しているものであり、何らかの権利を許諾するものでもありません。コミュニティにおけるマイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。詳しくは http://www.microsoft.com/japan/communities/msp.mspx をご覧ください。
    • 回答としてマーク 無限極限 2009年3月10日 14:14
    • 回答としてマークされていない 無限極限 2009年3月19日 16:45
    • 回答としてマーク 無限極限 2009年3月20日 13:25
    2009年3月2日 5:53
  • 次は配置の話です。

    Web ページへの Silverlight の統合
    http://msdn.microsoft.com/ja-jp/library/cc838145(VS.95).aspx
    を読まれることをお勧めします。

    >Default.aspx
    >Default.aspx.cs
    >Default.aspx.designer.cs
    >このセットはASPの場合必要なのでしょうか?
    >基本ベースが普通のHTMLならばまるまる削除していいのでしょうか?
    単純にSilverlightのアプリケーションをホストするだけならば、削除しても影響ありません。
    なぜなら、これらのファイルは、実際のところ、Silverlightに関する部分をまったく記述していないからです。独自のWebサイトをASP.NETを使って開発する場合は、ここから拡張するといいでしょう。

    >Silverlight.js
    >javascriptを使わなければこれもいらないような気がしますが
    >どうなのでしょうか?

    はい、なくても大丈夫です。
    <object>タグを使って、Silverlightアプリケーションを読み込む場合、
    <script type="text/javascript" src="Silverlight.js"></script> で指定されているSilverlight.jsは必須ではありません。

    Silverlight.jsを使う場合の詳細は、次が参考になると思います。
    JavaScriptを使ってアプリケーションを読み込む場合は、<object>タグよりも記述することが増えますが、Silverlightランタイムのインストールの有無やインストールページへの誘導、インストールを待ってブラウザの再読み込みをするなど、アプリケーションの起動までの体験をより便利にできます。

    方法 : JavaScript を使用して Web ページに Silverlight を追加する
    http://msdn.microsoft.com/ja-jp/library/cc265155(VS.95).aspx

    >SilverlightApplication1TestPage.aspx
    >SilverlightApplication1TestPage.html
    >これは・・・

    .aspxは、ASP.NETのSilverlightコントロールを使って、Silverlightのアプリケーションを読み込む場合に使います。
    .htmlは、HTMLの<object>タグを使って、Silverlightのアプリケーションを読み込みます。

    違いを見てみましょう。

    SiverlightApplication01TestPage.aspx
    こちらは、動的なページで、<asp:Silverlight>というサーバーサイドのタグで、Silverlightアプリケーションの読み込みを行っています。
    <asp:ScriptManager>との併用が必要です。

    ASP.NET Silverlightサーバーコントロールの詳細については、
    http://msdn.microsoft.com/ja-jp/library/cc838274(VS.95).aspx をご覧ください。

    <%@ Page Language="C#" AutoEventWireup="true" %> 
     
    <%@ Register Assembly="System.Web.Silverlight" Namespace="System.Web.UI.SilverlightControls" 
        TagPrefix="asp" %> 
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
     
    <html xmlns="http://www.w3.org/1999/xhtml" style="height:100%;">  
    <head runat="server">  
        <title>SilverlightApplication01</title> 
    </head> 
    <body style="height:100%;margin:0;">  
        <form id="form1" runat="server" style="height:100%;">  
            <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> 
            <div  style="height:100%;">  
                <asp:Silverlight ID="Xaml1" runat="server" Source="~/ClientBin/SilverlightApplication01.xap" MinimumVersion="2.0.31005.0" Width="100%" Height="100%" /> 
            </div> 
        </form> 
    </body> 
    </html> 

    このaspxがブラウザから読み込まれると、次のようなHTMLに変わります。これは、ASP.NETによって動的に生成されたものです。
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml" style="height:100%;">  
    <head><title>  
        SilverlightApplication01  
    </title></head>  
    <body style="height:100%;margin:0;">  
        <form name="form1" method="post" action="SilverlightApplication01TestPage.aspx" id="form1" style="height:100%;">  
    <div> 
    <input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" /> 
    <input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" /> 
    <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJOTM0MTA3NzQxZGS314fbDwTdYDmyHBK7iMlQNgPHNw==" /> 
    </div> 
     
    <script type="text/javascript">  
    //<![CDATA[
    var theForm = document.forms['form1'];
    if (!theForm) {
        theForm = document.form1;
    }
    function __doPostBack(eventTarget, eventArgument) {
        if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
            theForm.__EVENTTARGET.value = eventTarget;
            theForm.__EVENTARGUMENT.value = eventArgument;
            theForm.submit();
        }
    }
    //]]> 
    </script> 
     
    <script src="/WebResource.axd?d=ZC3TI3klXzrDcbA4fXqf_Q2&amp;t=633528109956801634" type="text/javascript"></script> 
     
    <script src="/ScriptResource.axd?d=9AGKo7DtYYsATsQwc6Zuyxto36AEPTv2wBvNHR5tjvQNOaxLJoRfmELtK7ZSbW-oXY7-Qwci5pDbMfk5zrmwPHPBlW6ZS2TR1dBDoAoPqoc1&amp;t=ffffffff93ac56fc" type="text/javascript"></script> 
    <script type="text/javascript">  
    //<![CDATA[
    if (typeof(Sys) === 'undefined') throw new Error('ASP.NET Ajax クライアント側フレームワークを読み込めませんでした。');
    //]]> 
    </script> 
     
    <script src="/ScriptResource.axd?d=9AGKo7DtYYsATsQwc6Zuyxto36AEPTv2wBvNHR5tjvQNOaxLJoRfmELtK7ZSbW-otjl1pFBJXEn4ml_u8MdlMY7zWkEJtrS0xYKnTDV7iPffT4ltYkkmBr5x3MMitQi30&amp;t=ffffffff93ac56fc" type="text/javascript"></script> 
    <script src="/ScriptResource.axd?d=rqPsLHzWwTi16UnvC81BOhu8Y4JsyLf9Yai6xtxk29NvVhGtV-Q0KA6NONw6StIc2JCmfg3VtcptuuY7TO2iFQ2&amp;t=5d6b1361" type="text/javascript"></script> 
            <script type="text/javascript">  
    //<![CDATA[
    Sys.WebForms.PageRequestManager._initialize('ScriptManager1', document.getElementById('form1'));
    Sys.WebForms.PageRequestManager.getInstance()._updateControls([], [], [], 90);
    //]]> 
    </script> 
     
            <div  style="height:100%;">  
                <span id="Xaml1_parent"></span> 
    <script type="text/javascript">  
    //<![CDATA[
    Sys.UI.Silverlight.Control.createObject('Xaml1_parent', '<object type="application/x-silverlight-2" data="data:application/x-silverlight-2," id="Xaml1" style="height:100%;width:100%;">\r\n\t<param name="MinRuntimeVersion" value="2.0.31005.0">\r\n\r\n\t</param><a href="http://go2.microsoft.com/fwlink/?LinkID=114576&amp;v=2.0"><img src="http://go2.microsoft.com/fwlink/?LinkID=108181" alt="Microsoft Silverlight を取得" style="border-width:0;" /></a>\r\n</object>'); originalAttribute="href" originalPath=""http://go2.microsoft.com/fwlink/?LinkID=114576&amp;v=2.0"><img src="http://go2.microsoft.com/fwlink/?LinkID=108181" alt="Microsoft Silverlight を取得" style="border-width:0;" /></a>\r\n</object>');"
    //]]> 
    </script> 
     
            </div> 
          
     
    <script type="text/javascript">  
    //<![CDATA[
    Sys.Application.initialize();
    Sys.Application.add_init(function() {
        $create(Sys.UI.Silverlight.Control, {"source":"ClientBin/SilverlightApplication01.xap"}, null, null, $get("Xaml1_parent"));
    });
    //]]> 
    </script> 
    </form> 
    </body> 
    </html> 

    SiverlightApplication01TestPage.html

    こちらは次のような静的なHTMLです。
    onSilverlightErrorというJavaScriptのメソッドは、Silverlight側で例外が発生すると呼び出されます。
    <object>タグでSilverlightのアプリケーションを読み込んでいますが、Silverlightランタイムがインストールされていないブラウザの場合、<a>タグにフォールバックして、プラグインのインストーラーURLへのリンクを表示します。
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml" > 
    <!-- saved from url=(0014)about:internet --> 
    <head> 
        <title>SilverlightApplication01</title> 
     
        <style type="text/css">  
        html, body {  
            height: 100%;  
            overflow: auto;  
        }  
        body {  
            padding: 0;  
            margin: 0;  
        }  
        #silverlightControlHost {  
            height: 100%;  
        }  
        </style> 
     
        <script type="text/javascript" src="Silverlight.js"></script> 
        <script type="text/javascript">  
            function onSilverlightError(sender, args) {  
              
                var appSource = "";  
                if (sender != null && sender != 0) {  
                    appSource = sender.getHost().Source;  
                }   
                var errorType = args.ErrorType;  
                var iErrorCode = args.ErrorCode;  
                  
                var errMsg = "Unhandled Error in Silverlight 2 Application " +  appSource + "\n" ;  
     
                errMsg += "Code: "+ iErrorCode + "    \n";  
                errMsg += "Category: " + errorType + "       \n";  
                errMsg += "Message: " + args.ErrorMessage + "     \n";  
     
                if (errorType == "ParserError")  
                {  
                    errMsg += "File: " + args.xamlFile + "     \n";  
                    errMsg += "Line: " + args.lineNumber + "     \n";  
                    errMsg += "Position: " + args.charPosition + "     \n";  
                }  
                else if (errorType == "RuntimeError")  
                {             
                    if (args.lineNumber != 0)  
                    {  
                        errMsg += "Line: " + args.lineNumber + "     \n";  
                        errMsg += "Position: " +  args.charPosition + "     \n";  
                    }  
                    errMsg += "MethodName: " + args.methodName + "     \n";  
                }  
     
                // alert(errMsg);  
                throw new Error(errMsg);  
            }  
        </script> 
    </head> 
     
    <body> 
        <!-- Runtime errors from Silverlight will be displayed here.  
        This will contain debugging information and should be removed or hidden when debugging is completed --> 
        <div id='errorLocation' style="font-size: small;color: Gray;"></div> 
     
        <div id="silverlightControlHost">  
            <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">  
                <param name="source" value="ClientBin/SilverlightApplication01.xap"/>  
                <param name="onerror" value="onSilverlightError" /> 
                <param name="background" value="white" /> 
                <param name="minRuntimeVersion" value="2.0.31005.0" /> 
                <param name="autoUpgrade" value="true" /> 
                <href="http://go.microsoft.com/fwlink/?LinkID=124807" style="text-decoration: none;">  
                    <img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none"/>  
                </a> 
            </object> 
            <iframe style='visibility:hidden;height:0;width:0;border:0px'></iframe> 
        </div> 
    </body> 
    </html> 
     


    この投稿は現状のまま何の保証もなく掲載しているものであり、何らかの権利を許諾するものでもありません。コミュニティにおけるマイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。詳しくは http://www.microsoft.com/japan/communities/msp.mspx をご覧ください。
    • 回答としてマーク 無限極限 2009年3月20日 13:25
    2009年3月2日 6:54
  • >Web.config
    >このファイルはデバッグするときに必要そうですが何なのでしょうか?

    Visual Studio 2008/Visual Web Developer 2008 Express Editionにおいて、Webプロジェクトのデバッグ実行において、テスト用のIIS/ASP.NETサーバーが起動されます。このサーバーの構成をWeb.configで行っていますが、完成したアプリケーションを展開用のIISに配置する際にも利用できます。

    そんなわけで、Web.configは、IISの構成用のファイルになっています。
    IIS 7の設定用スキーマ情報は、http://msdn.microsoft.com/ja-jp/library/aa347559(en-us).aspx に詳細があります。ここでは解説を省略します。

    <?xml version="1.0"?>     
    <configuration>    
        <configSections>    
            <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">     
                <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">     
                    <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>     
                    <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">     
                        <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere"/>     
                        <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>     
                        <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>     
                        <section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>     
                    </sectionGroup>    
                </sectionGroup>    
            </sectionGroup>    
        </configSections>    
        <appSettings/>    
        <connectionStrings/>    
        <system.web>    
            <!--      
                デバッグ シンボルをコンパイルされたページに挿入するに     
                は、compilation debug="true" に設定します。この設     
                定はパフォーマンスに影響するため、開発時のみこの値     
                を true に設定してください。     
            -->    
            <compilation debug="true">     
                <assemblies>    
                    <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>     
                    <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>     
                    <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>     
                    <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>     
                </assemblies>    
            </compilation>    
            <!--     
                <authentication> セクションは、ユーザーを識別するため     
                に、ASP.NET で使用されるセキュリティ認証モードの構成     
                を有効にします。-->    
            <authentication mode="Windows"/>     
            <!--     
                <customErrors> セクションは、要求の実行中にハンドル     
                されていないエラーが発生した場合の処理方法の構成を     
                有効にします。具体的には、開発者が HTML エラー ペ     
                ージをエラーのスタック トレースの代わりに表示するように構     
                成することを可能にします。     
        
            <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">     
                <error statusCode="403" redirect="NoAccess.htm" />    
                <error statusCode="404" redirect="FileNotFound.htm" />    
            </customErrors>    
            -->    
            <pages>    
                <controls>    
                    <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>     
                    <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>     
                </controls>    
            </pages>    
            <httpHandlers>    
                <remove verb="*" path="*.asmx"/>     
                <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>     
                <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>     
                <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/>     
            </httpHandlers>    
            <httpModules>    
                <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>     
            </httpModules>    
        </system.web>    
        <system.codedom>    
            <compilers>    
                <compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">     
                    <providerOption name="CompilerVersion" value="v3.5"/>     
                    <providerOption name="WarnAsError" value="false"/>     
                </compiler>    
            </compilers>    
        </system.codedom>    
        <!--      
            system.webServer セクションは、Internet Information Services 7.0 で ASP.NET AJAX を     
            実行するために必要です。以前のバージョンの IIS では不要です。     
        -->    
        <system.webServer>    
            <validation validateIntegratedModeConfiguration="false"/>     
            <modules>    
                <remove name="ScriptModule"/>     
                <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>     
            </modules>    
            <handlers>    
                <remove name="WebServiceHandlerFactory-Integrated"/>     
                <remove name="ScriptHandlerFactory"/>     
                <remove name="ScriptHandlerFactoryAppServices"/>     
                <remove name="ScriptResource"/>     
                <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>     
                <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>     
                <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>     
            </handlers>    
        </system.webServer>    
        <runtime>    
            <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">     
                <dependentAssembly>    
                    <assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/>     
                    <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>     
                </dependentAssembly>    
                <dependentAssembly>    
                    <assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35"/>     
                    <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>     
                </dependentAssembly>    
            </assemblyBinding>    
        </runtime>    
    </configuration> 

    なお、静的なHTMLを使ってSilverlightアプリケーションをホストする場合、ここまでの設定は不要です。
    最低限、WebサーバーのMIME Typeとして、
    .xap    application/x-silverlight-app
    .xaml    application/xaml+xml
    の設定がなされていれば、HTMLと.xapファイルをサーバー側に配置するだけで大丈夫です。


    この投稿は現状のまま何の保証もなく掲載しているものであり、何らかの権利を許諾するものでもありません。コミュニティにおけるマイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。詳しくは http://www.microsoft.com/japan/communities/msp.mspx をご覧ください。
    • 回答としてマーク 無限極限 2009年3月20日 13:25
    2009年3月2日 7:01
  • 大西さんご回答ありがとうございます。
    また、せっかく隅々まで行き届いた返信をいただいたのに放置したままでした。
    アラートを設定してたはずなのに何もメールが来ないので
    返信が無いのだと思っていて今日見てみたら素晴らしい解答をいただいたのに
    気づいたしだいです。

    なお、細かい所の質問を再度させていただくかもしれません。
    そのときもできればヨロシクお願いいたします。
    2009年3月10日 14:13
  • 無限極限さん、

    書き込みが役立ったようで、よかったです。
    また何かあれば、お気軽に投稿してください。

    よろしくお願いします。
    この投稿は現状のまま何の保証もなく掲載しているものであり、何らかの権利を許諾するものでもありません。コミュニティにおけるマイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。詳しくは http://www.microsoft.com/japan/communities/msp.mspx をご覧ください。
    • 回答としてマーク 無限極限 2009年3月20日 13:25
    2009年3月11日 9:58
  •  こんにちは。くろのと申します。遅レスですが私も少しレスさせていただきます。

    手前味噌ですが、わたしの書いた最近の記事で一つのHTML内でAdobe FlexとMicrosoft Silverlightアプリケーションを同時に表示しています。
    http://www.atmarkit.co.jp/fwcr/rensai2/ria03/01.html

    大西さんがすでに詳細にレスされていますが、大まかにSilverlight のWebへの配置までの手順はだいたい以下のようになります。大西さんとアプリ開発の部分の説明がちょっと違いますが、

    ・Silverlightアプリケーションを作成する
    - Silverlightアプリケーションで最初に作られるファイル群は基本手を加えない。ほっておく。なので慣れるまで中身を知らなくても良い。
    (他に知らなくてはならないことがとても多いので、こまかいことはまずは後回し。かつ開発者全員はぶっちゃけ知らなくてもいい)
    (この部分はクライアント基盤や特殊な初期化処理などを記述すべきところかと私は考えています)
    ーなのでApp.xaml、App.xaml.cs、Page.xaml.csは何も手を加えない。
    ーPage.xamlに作るアプリのいちばんルートになるアプリのXAMLを呼び出すタグを1行書く。
    (StackPanelとそれで囲まれた1行のタグで構成される。その1行が「いちばんルートになるアプリのXAML」。Gridはウザイので使わない;;)
    -以後、そのXAMLとそれに関するコードビハインドで構成されるSilverlightアプリをガンガン開発する(以後アプリ開発に関しては略)

    ・Silverlightプロジェクトと一緒に作成されるWebプロジェクトのHTMLのソースを覗く。
    するとHTMLにSilverlightを埋め込むにはobjectタグでXAPを呼んでるだけなことがわかる。
    XAP:アプリを圧縮してまとめてしまったもの。XAMLやDLLが入っている。勝手に作られる。
    ・このobjectタグ周辺のコードとXAPをWebサイトへの配置を担当している人に渡す
    ・Silverlightの自動検知はやってもいいですが、Flash Playerなどと同様に、ページの下の方にSilverlightのアイコンとダウンロードページへのリンクをはっつけておいてもよいでしょう。

    記事にソースが付いてるので、解説はないですが、上記のPage.xamlからコードを追っていけばアプリの内部構造も簡単に理解できるかと思います。

    どちらかというと構造という点では、Silverlightそのものの構造(大西さん解説部分)はアーキテクトが把握しておき、デベロッパはアプリケーション自体の構造(どういうCSファイルにどういうコードを書けばいいか)の方が重要かと思います。
    (記事の例は非常にシンプルなアーキテクチャで作成しています。ちょっと基盤を増強すれば中規模案件くらいまではいけると思いますが。)
    • 回答としてマーク 無限極限 2009年3月20日 13:25
    2009年3月13日 6:52
  • Cronolovesxboxさん記事を読まさせていただきました。
    ありがとうございます。
    僕は正直なところFlashでもSilvelrightでもどちらでもよいのですが
    Flashは一応高価なソフトを買わないといけないので
    無料でできるSilvelrightで作ってみようと思いました。

    ところで教えて頂いて非常に理解が深まりましたが実作業で疑問な点がでてきましたので
    質問させて頂きたいと思います。

    VCSEで新規作成の時にWPFブラウザアプリケーションを選ぶと
    画面左側にボタンやテキストボックスなどのツールメニューが表示され
    右下にプロパティを変更できる枠が出てきますが
    VWDEの場合どちらとも表示されないのはなぜなのでしょうか?
    あればもっと作業がしやすくなると思うのですが
    それとも何か設定を変更しなければいけないのでしょうか?

    また、組んでインターネットで公開する場合ソースの中身は
    つまりxapファイルは簡単に解析されてしまうものなのでしょうか?
    それともよっぽど手の込んだことをしないと容易には
    わからないものなのでしょうか?

    また、
    Default.aspx
    Default.aspx.cs
    Default.aspx.designer.cs
    この3ファイルは必要ない場合でも、残したままにしておくと
    xapファイルの中に集約されるのだと思いますが
    http://**********/Default.aspx
    とアクセスされた場合真っ白なホームページが表示されるように
    なるのでしょうか?

    無知で申し訳ありませんが宜しくお願いいたします。
    2009年3月15日 10:51
  • 無限極限 の発言:

    VCSEで新規作成の時にWPFブラウザアプリケーションを選ぶと
    画面左側にボタンやテキストボックスなどのツールメニューが表示され
    右下にプロパティを変更できる枠が出てきますが
    VWDEの場合どちらとも表示されないのはなぜなのでしょうか?
    あればもっと作業がしやすくなると思うのですが
    それとも何か設定を変更しなければいけないのでしょうか?

    無償の VWD では、できることが限られます。→機能比較表

    無限極限 の発言:

    また、組んでインターネットで公開する場合ソースの中身は
    つまりxapファイルは簡単に解析されてしまうものなのでしょうか?
    それともよっぽど手の込んだことをしないと容易には
    わからないものなのでしょうか?

    .NET framework が作る .exe ファイルは、マシン語ではなく MSIL という共通言語です。これは、逆アセンブルすることで、簡単に C# などに変換できます。

    Standard か Professional Edition から、難読化ツールのお試し版がついてきます。

    しかし、解析しようと思えばマシン語から解析することも可能なので、配布先、機密度などとの相談でしょう。


    Jitta@わんくま同盟
    • 回答としてマーク 無限極限 2009年3月20日 13:25
    2009年3月16日 14:19
  • 無償版だとできないようにしているのですか。

    でしたら

    Microsoft Expression Blend 2 Service Pack 1

    これをインストールしようかと思いますが
    VCSWとVWDEを入れたパソコンで問題ないでしょうか?
    更に質問を追加してしまいすいません。

    また、解析は非常に容易にできるようですね。
    ありがとうございます。参考になりました。
    2009年3月18日 15:18
  • VCSW は、Visual Studio C++ Standard Edition のことでしょうか?4文字省略語に拒否反応が・・・(^-^;

    Standard には、VWD の機能は含まれます。VWD をインストールする必要はないと思いますよ。
    Jitta@わんくま同盟
    • 回答としてマーク 無限極限 2009年3月20日 13:25
    2009年3月19日 6:52
  •  誤記です。すいません。
    × VCSW
    ○ VCSE(Visual C# 2008 Express Edition)

    それと、質問が伝わりづらい文章だったようで
    VWDが欲しいというよりは
    作業でxaml画面のコントロールの例えばボタンをWクリックしたときに
    csファイルにボタンをクリックしたときののメッソド(?という呼び方でしたっけ)が出てくる
    普通のプログラムを組むときに備わっている機能や
    画面左側にツールボックスが表示されていたり
    コントロールを選択したら右側にプロパティ編集画面が出てきたりすれば
    作業するのに便利だと思いそういった機能が
    Expression Blend 2
    にあるのもしれないと思い僕の環境でも入れても大丈夫なのかと質問さえて頂いたしだいです。
    2009年3月19日 13:57
  •  
    無限極限 の発言:

     誤記です。すいません。
    × VCSW
    ○ VCSE(Visual C# 2008 Express Edition)

    それと、質問が伝わりづらい文章だったようで
    VWDが欲しいというよりは
    作業でxaml画面のコントロールの例えばボタンをWクリックしたときに
    csファイルにボタンをクリックしたときののメッソド(?という呼び方でしたっけ)が出てくる
    普通のプログラムを組むときに備わっている機能や
    画面左側にツールボックスが表示されていたり
    コントロールを選択したら右側にプロパティ編集画面が出てきたりすれば
    作業するのに便利だと思いそういった機能が
    Expression Blend 2
    にあるのもしれないと思い僕の環境でも入れても大丈夫なのかと質問さえて頂いたしだいです。



    XAML の編集でしたら、Visual Studio ではデザイナを編集することはできないようです。Professional Edition でもデザイナの方へはコントロールをドラッグできず、XML エディタの方へならドラッグできました。

    Silverlight アプリケーションの開発に、Visual C# 2008 Express Edition は、必要ありません。Visual Web Developer 2008 Express Edition SP1 があれば十分です。デザイナでの編集には、Expression のどれかのエディションが必要になります。


    Jitta@わんくま同盟
    • 回答としてマーク 無限極限 2009年3月20日 13:25
    2009年3月20日 12:11
  •  Jittaさん。返信ありがとうございます。
    Visual Web Developer 2008 Express Editionで
    ツールボックスが出てきたり
    デザイナ(xaml)のプロパティが画面右下で編集できるようになれば便利なんですが
    それができないかと質問させて頂いたしだいです。

    ちなみにExpression Blend 2をインストールしてみましたが
    デザイナの編集はものすごく見栄えが良くて作業しやすいのですが
    csファイルの編集はできないようで開くとVWDEが起動してしまいます。

    何を使うにしても一長一短といった所です。

    どちらも充実できれば良いのですが・・・

    無料ですし使えるだけありがたいと思うことにします。
    2009年3月20日 12:34
  • 無限極限 の発言:

     Jittaさん。返信ありがとうございます。
    Visual Web Developer 2008 Express Editionで
    ツールボックスが出てきたり
    デザイナ(xaml)のプロパティが画面右下で編集できるようになれば便利なんですが
    それができないかと質問させて頂いたしだいです。

    ああ、ごめんなさい。有償版でもできないので、たぶんできない、の意図でした。


    無限極限 の発言:

    ちなみにExpression Blend 2をインストールしてみましたが
    デザイナの編集はものすごく見栄えが良くて作業しやすいのですが
    csファイルの編集はできないようで開くとVWDEが起動してしまいます。

    はい、そういう仕様です。

    確か、Expression 発表前のラウンド テーブルで指摘したことなのですが、「デザイナーとディベロッパーの分業といわれるが、それは進んでいるのか。どのようなマーケティング調査をしたのか」と、問いました。十分な市場調査をした上での仕様だと伺っています。まぁ、その「市場」に日本(というか、北米以外)が入っていたかどうかは不明ですが;) そのようなわけで、開発者がデザイナーを兼ねる場合は、使いにくいと思います。


    Jitta@わんくま同盟
    • 回答としてマーク 無限極限 2009年3月20日 13:25
    2009年3月20日 12:58
  • 返信ありがとうございます。
    大分最初の質問から遠ざかっていきましたが
    皆さんのお陰で理解が深まりました。
    これからもよろしくお願いします。
    2009年3月20日 13:26