[英]C# preprocessor directive or conditional for differentiating between Visual Studio 2012 and 2010?
[英]C# preprocessor directive ignored in Visusal Studio 2010 Express?
我從codeProject下載了一段代碼。
#if
預處理器指令似乎不像我預期的那樣工作。
我沒有在 MyProject >> 屬性 >> 構建選項卡 >> 條件編譯符號中定義 DSHOWNET(對話框為空)
在下面的代碼中,在構建項目時會顯示錯誤DShowNET could not be found 。 由於 DSHOWNET 從未被定義,我很驚訝“使用 DShowNET”甚至被處理了。
using System;
using System.Collections;
using System.Runtime.InteropServices;
#if DSHOWNET
using DShowNET;
using DShowNET.Device;
#else
#if VS2003
#else
using System.Runtime.InteropServices.ComTypes;
#endif
using DirectShowLib;
#endif
#if 預處理器指令是否適用於 Visual Studio Express 版本? DSHOWNET 是否需要明確“未定義”? 還是我錯過了其他一些基本概念?
我下載了示例抓取器項目並將其放在我的系統上。 (我使用的是 Enterprise VS。)我打開CaptureTest-2005
解決方案,將其轉換為 VS2010 解決方案,然后加載它。 加載CaptureTest-2005
解決方案后,我仍然看到與您看到的問題相同的文件。
所以,我發現,雖然CaptureTest-2005
項目沒有在 Build 頁面上定義DSHOWNET
,但DirectX.Capture-2005
項目卻有。 因此,對於DirectX.Capture-2005
中的所有文件, DSHOWNET
指令評估為真,因此正在處理#if DSHOWNET
指令中的項目。
我不確定該解決方案是否只需要您構建和使用 CodeProject 下載的DSHOWNET
部分(例如,我不確定是否需要DirectX.Capture
)但我想,因為DirectX.Capture
項目已經定義了它,您將必須構建並使用該程序集來運行該項目。 (可能有辦法解決它,我還沒有深入研究。我建議檢查項目頁面,看看是否有關於什么取決於什么的信息。)
希望這可以幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.