[英]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.