2012-02-27 11 views
0

現在、主にSilverlightで作られたWP7のゲームを作っています。しかし今、私はXNAを使うことができるページが必要です。 XNAページは戦闘のデータを受け取り、ユーザーのためにそれを視覚化します。Silverlight WP7プロジェクトにXNAを追加

私は私の溶液中で、「Windows PhoneのSilverlightとXNA」プロジェクト(BattleSimulator)を作り、GamePage.xamlに移動しようとしました。しかし、NullReferenceException(アプリケーションとしてのApplication.Current)と警告が表示されます。警告はBattleSimulatorプロジェクトにあります。

警告

Warning 1 The project 'BattleSimulatorLib' cannot be referenced. The referenced project is targeted to a different framework family (.NETFramework) 

コード

​​

STACKTRACE

それを解決する1つの方法は、bのでしょう
at BattleSimulator.GamePage..ctor() 
    at System.Reflection.RuntimeConstructorInfo.InternalInvoke(RuntimeConstructorInfo rtci, BindingFlags invokeAttr, Binder binder, Object parameters, CultureInfo culture, Boolean isBinderDefault, Assembly caller, Boolean verifyAccess, StackCrawlMark& stackMark) 
    at System.Reflection.RuntimeConstructorInfo.InternalInvoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, StackCrawlMark& stackMark) 
    at System.Activator.InternalCreateInstance(Type type, Boolean nonPublic, StackCrawlMark& stackMark) 
    at System.Activator.CreateInstance(Type type) 
    at System.Windows.Navigation.PageResourceContentLoader.BeginLoad_OnUIThread(AsyncCallback userCallback, PageResourceContentLoaderAsyncResult result) 
    at System.Windows.Navigation.PageResourceContentLoader.<>c__DisplayClass4.<BeginLoad>b__0(Object args) 
    at System.Reflection.RuntimeMethodInfo.InternalInvoke(RuntimeMethodInfo rtmi, Object obj, BindingFlags invokeAttr, Binder binder, Object parameters, CultureInfo culture, Boolean isBinderDefault, Assembly caller, Boolean verifyAccess, StackCrawlMark& stackMark) 
    at System.Reflection.RuntimeMethodInfo.InternalInvoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, StackCrawlMark& stackMark) 
    at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters) 
    at System.Delegate.DynamicInvokeOne(Object[] args) 
    at System.MulticastDelegate.DynamicInvokeImpl(Object[] args) 
    at System.Delegate.DynamicInvoke(Object[] args) 
    at System.Windows.Threading.DispatcherOperation.Invoke() 
    at System.Windows.Threading.Dispatcher.Dispatch(DispatcherPriority priority) 
    at System.Windows.Threading.Dispatcher.OnInvoke(Object context) 
    at System.Windows.Hosting.CallbackCookie.Invoke(Object[] args) 
    at System.Windows.Hosting.DelegateWrapper.InternalInvoke(Object[] args) 
    at System.Windows.RuntimeHost.ManagedHost.InvokeDelegate(IntPtr pHandle, Int32 nParamCount, ScriptParam[] pParams, ScriptParam& pResult) 

私のすべてのSilverlightクラスとマークアップを新しいSLとXNAプロジェクトにコピーしますが、それは私のif-all-else-fail計画です。

誰もこのNullReferenceExceptionまたは警告を解決する方法を知っていますか?それとも何か他の方法でこれをやろうとするべきですか?

編集:ここに警告に関する情報が見つかりました:http://forums.create.msdn.com/forums/p/93769/561676.aspx それは無害です。

答えて

0

null参照はasオペレータはあなたがasの結果にContentプロパティを見つけるためにしようとしたときとNullReferenceExceptionであなたを残しますAppに型キャストを失敗している可能性が最も高いです。

SL/XNAプロジェクトでは、アプリケーションのグローバルレベルで定義されている追加のものと、Appオブジェクトのいくつかの追加の定型コードがあります。これらはSL/XNA固有であり、純粋なSLプロジェクトには定義されていません。 SL/XNAプロジェクトでは、XNAクラスライブラリへの追加のプロジェクト参照も必要です。

標準のSLとSL/XNAの基本的なアプリケーションプロジェクトの違いを慎重に検討すると、この余分なコードを手動で既存のSLプロジェクトに追加することはできますが、おそらく、新しいSL/XNAプロジェクトを開き、コードをその中に移動します。

例えば、いくつかの追加がApp.xamlから(これは余分な定型的なコードが含まれ、そう自分自身をチェックしません)

です:

<!--The SharedGraphicsDeviceManager is used to render with the XNA Graphics APIs--> 
<xna:SharedGraphicsDeviceManager /> 

App.xaml.csから:

/// <summary> 
    /// Provides access to a ContentManager for the application. 
    /// </summary> 
    public ContentManager Content { get; private set; } 

    /// <summary> 
    /// Provides access to a GameTimer that is set up to pump the FrameworkDispatcher. 
    /// </summary> 
    public GameTimer FrameworkDispatcherTimer { get; private set; } 

    /// <summary> 
    /// Provides access to the AppServiceProvider for the application. 
    /// </summary> 
    public AppServiceProvider Services { get; private set; } 
+0

ありがとうございます。それを見て始めましたが、ちょっと面倒なようですが、私は危険なのは私が不安定なものに終わることだと思います。私はちょうど私のマウスを取得し、インポートを開始します。 – softarn

関連する問題