locked
Silverlightプロジェクトからの外部ライブラリのメソッド呼び出しについて RRS feed

  • 質問

  • すいません、質問させてください。

    Silverlightから、XNA、SlimDX等の外部ライブラリにあるメソッドを呼び出そうとしているのですが、
    Solution Explorer → Silverlightプロジェクト→References→.NETタブにはXnaは出てこず、
    BrowseタブからMicrosoft.Xna.Framework.dllを直接DLL指定しても

    you can't add a reference to Microsoft.Xna.Framework.dll as it was not built against the silverlight runtime.
    silverlight projects will only work with silverlight assemblies.

    というエラーが出て追加できません。

    Silverlightから、外部ライブラリ呼び出しは、そもそも出来ないものですか?
    それとも一時的なもので、正式版がリリースされることで解消されていくものでしょうか?

    #ソリューション新規作成時に同時作成された、ASP.NET用と思われるプロジェクト
    (プロジェクト名末尾に.Webが付く)には、外部ライブラリが追加できましたが、
    出来ればSilverlightのプロジェクトに追加したいです。

    言語:C#
    環境:
    WinXP Pro Ver2002 sp3
    VS2010 RC/SL4
    SlimDX(Feb 2010)
    XNA3.1

    どなたかご助力いただければと思います。
    2010年4月21日 8:31

回答

  • Silverlightから、外部ライブラリ呼び出しは、そもそも出来ないものですか?
    それとも一時的なもので、正式版がリリースされることで解消されていくものでしょうか?

    SilverlightはfullCLRとはべつのminiCLRと言われる物で提供されています。Silverlightから参照出来るのは、あくまでSilvelrightようにビルドされたアセンブリのみです。Silverlight4からはCLRのアセンブリと一部互換性がありますが限定的です。

    InfoQにアセンブリの共有に関する記事があります。⇒ Silverlight 4は、.NETとアセンブリを共有する

     

    • 回答としてマーク maniacchef 2010年4月22日 2:46
    2010年4月22日 1:59
  • Silverlightは.NET Frameworkとは「別のもの」です。
    という認識が最初に必要かな。
    かるあ さんが書いているように実行環境であるCLRが異なる、とともに、提供されているクラスも異なります。

    まぁ、Windows上にインストールされて動作する.NET Frameworkと、ブラウザ上のプラグインにすぎないSilverlightは違うものであって当然ですね。

    #ブラウザ外実行では専用のホストアプリケーションが走って、その上でSilverlightが実行されるようです。

    Silverlight 4ではブラウザ外実行時にCOMを呼び出すことができるようになったので、COMを介して.NET Frameworkの機能を呼び出すことはできそうですが。。。
    それぐらいならWPFアプリを作って、配布の方法を検討したほうがよさそう(w


    あおい情報システム株式会社 小野修司(どっとねっとふぁん)
    • 回答としてマーク maniacchef 2010年4月22日 2:46
    2010年4月22日 2:24

すべての返信

  • Silverlightから、外部ライブラリ呼び出しは、そもそも出来ないものですか?
    それとも一時的なもので、正式版がリリースされることで解消されていくものでしょうか?

    Silverlight の位置づけを考えれば、XNA や SlimDX が使えないことは自然に思えますが、どのあたりが引っかかるのでしょうか?(あくまで正確な情報を持たない段階の主観での判断です。もしかしたら、方法があるのかもしれません)
    それとも、何かやりたいことがあって、それを実現する手法を探しているのでしょうか?

    WP7 アプリケーションでは共存しそうですが、詳細は追いかけていません。
    http://blogs.msdn.com/ito/archive/2010/03/18/xna-game-studio-4-0-assemblies.aspx


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    2010年4月21日 15:20
  • Azuleanさん、ご回答ありがとうございます。

    Silverlight の位置づけを考えれば、XNA や SlimDX が使えないことは自然に思えますが、どのあたりが引っかかるのでしょうか?(あくまで正確な情報を持たない段階の主観での判断です。もしかしたら、方法があるのかもしれません)

    おそらく私がSilverlightの位置づけがよく理解できていないのが原因と思われますが、

    XNAやSlimDXがWin環境に依存するので、クライアントの環境に依存しないSilverlightには組み込むことができないということでしょうか?

    XNA、SlimDXはマネージドなので、組み込めると思ったのですが・・・(マネージドの認識が間違っている?)

    それとも、何かやりたいことがあって、それを実現する手法を探しているのでしょうか?

    再生中のmp3に、サウンドエフェクトをかけられるSilverlightアプリケーションの作成を試みております。

    SlimDXならXAudio2、XNAならMicrosoft.Xna.Framework.Audio.SoundEffectの使用を試みております。

    サウンド関連はデバイスに依存するから、Webアプリとしての実現は不可能なのでしょうか?

     

    度々すみませんが、ご回答いただければと思います。

    2010年4月22日 0:32
  • Silverlightから、外部ライブラリ呼び出しは、そもそも出来ないものですか?
    それとも一時的なもので、正式版がリリースされることで解消されていくものでしょうか?

    SilverlightはfullCLRとはべつのminiCLRと言われる物で提供されています。Silverlightから参照出来るのは、あくまでSilvelrightようにビルドされたアセンブリのみです。Silverlight4からはCLRのアセンブリと一部互換性がありますが限定的です。

    InfoQにアセンブリの共有に関する記事があります。⇒ Silverlight 4は、.NETとアセンブリを共有する

     

    • 回答としてマーク maniacchef 2010年4月22日 2:46
    2010年4月22日 1:59
  • Silverlightは.NET Frameworkとは「別のもの」です。
    という認識が最初に必要かな。
    かるあ さんが書いているように実行環境であるCLRが異なる、とともに、提供されているクラスも異なります。

    まぁ、Windows上にインストールされて動作する.NET Frameworkと、ブラウザ上のプラグインにすぎないSilverlightは違うものであって当然ですね。

    #ブラウザ外実行では専用のホストアプリケーションが走って、その上でSilverlightが実行されるようです。

    Silverlight 4ではブラウザ外実行時にCOMを呼び出すことができるようになったので、COMを介して.NET Frameworkの機能を呼び出すことはできそうですが。。。
    それぐらいならWPFアプリを作って、配布の方法を検討したほうがよさそう(w


    あおい情報システム株式会社 小野修司(どっとねっとふぁん)
    • 回答としてマーク maniacchef 2010年4月22日 2:46
    2010年4月22日 2:24
  • CLRが別であることは知りませんでした。結局Silverlight用にビルドされたものでないと参照できないということですね。回答ありがとうございました。
    2010年4月22日 2:48
  • Silverlightと.NET Frameworkが別物という認識がありませんでした。。CLRの違いを追ってみます。

    回答ありがとうございました。

    ***

    目的だった「silverlightの外部ライブラリ(=silverlight以外で実装したもの)呼び出し」が不可能であることが分かりましたので、

    質問を閉めさせていただきます。

    皆様ご回答ありがとうございました。

    2010年4月22日 2:57