簡體   English   中英

XNA-根據目標平台有條件地包含對象

[英]XNA - Conditionally include object based on target platform

我正在為Windows和xbox構建XNA 4.0應用程序。

在Windows版本中,我有一個調試控制台,該控制台引用IronPython和緊湊框架中不支持的某些CLR / DLR程序集。 我也有一些引用這些項目的局部類。

我知道我可以從xbox項目中刪除引用以保持兼容性。 但是,我還需要刪除引用這些項目的類。 問題是這些類由需要它們的其他類實例化,但僅適用於Windows。

解決這一難題的明顯方法是將對不支持的類的調用包裝在#if預處理器指令中:

#if WINDOWS
  InitializeScriptingEngine(....);
#endif

另外,我想我可以用相同的方法包裝整個類/部分類,以防止被編譯。 有一個更好的方法嗎? 我想避免使用預處理器指令添加代碼。

另外,我似乎找不到在解決方案范圍內指定條件的方法。

如果您將Game Studio的內置功能用於“為Xbox 360創建項目的副本”(Zune和Windows Phone的同上),則以下操作將在項目之間進行鏡像:

  • 新增項目
  • 添加現有項目
  • 改名
  • 刪除

至關重要的是,以下操作未在項目之間進行鏡像

  • 從項目中排除
  • 更改參考和內容參考

在MSDN上的“ 跨平台游戲項目轉換器”頁面上對此進行了更詳細的說明。 此過程由項目文件中的<XnaCrossPlatformGroupID>元素控制。

結果是您可以從該平台上的項目中簡單地排除包含不相關類的文件。

我個人更喜歡在平台缺少某些功能的情況下創建備用存根類,而不是在整個項目中分散使用#ifdef 並且,如果您在存根函數中附加了[Conditional("NEVER_DEFINED")]屬性,則編譯器將刪除對其的調用。

我可以肯定地說,在Visual Studio中沒有解決方案范圍的指定定義常量的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM