2010-11-12 75 views
1

我正在爲Windows和xbox構建XNA 4.0應用程序。XNA - 有條件地包含基於目標平臺的對象

在Windows版本中,我引用IronPython和未在緊湊的框架支持的一些CLR/DLR裝配調試控制檯。我也有幾個參考這些項目的部分類。

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

顯而易見的解決這一窘境只是在#if預處理指令調用換到不支持的類:

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

另外,我想我可以換一整類/ partial類以同樣的方式,以保持它從被編譯。有一個更好的方法嗎?我想避免使用預處理器指令來處理代碼。

另外,我似乎無法找到一個方法來指定一個解決方案範圍的基礎上,條件語句。

回答

1

如果你使用遊戲工作室的內置了「爲Xbox 360創建項目的副本」(同上Zune播放器和Windows Phone)的功能,那麼下面的操作將項目之間的鏡像:

  • 添加新項
  • 添加現有項目
  • 重命名
  • 刪除

最重要的是,下面的運操作的沒有項目之間鏡像

這解釋(有很多更詳細) 。該過程由項目文件中的<XnaCrossPlatformGroupID>元素控制。

的結果是,你可以簡單地從該平臺上的項目排除包含無關類的文件。

個人而言,我更喜歡在整個項目中,而不是散佈#ifdef,以在平臺缺少某些功能的情況下創建備用存根類。如果您附加[Conditional("NEVER_DEFINED")]屬性您的存根函數,然後編譯器將刪除對它們的調用。

我相當確定在Visual Studio中沒有指定定義常量的解決方案範圍的方法。

+0

很好的回答;謝謝。 – 2010-11-13 19:56:27

相關問題