Директива препроцессора C # игнорируется в Visusal Studio 2010 Express? - PullRequest
4 голосов
/ 15 августа 2011

У меня есть секция кода, загруженная с codeProject .

Директива препроцессора #if не работает так, как я ожидал.

Я не определил DSHOWNET в MyProject >> Свойства >> Вкладка «Сборка» >> Условные символы компиляции (диалоговое окно пустое)

В приведенном ниже коде ошибка DShowNET не найдена отображается при сборке проекта. Поскольку 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 быть явно «неопределенным»? Или я упускаю какую-то другую базовую концепцию?

1 Ответ

5 голосов
/ 15 августа 2011

Я скачал пример проекта граббера и установил его в своей системе.(Я использую Enterprise VS.) Я открыл решение CaptureTest-2005, преобразовал его в решение VS2010 и загрузил его.После загрузки решения CaptureTest-2005 я все еще видел файлы, которые имели ту же проблему, что и вы.

Итак, я обнаружил, что, хотя в проекте CaptureTest-2005 не определено DSHOWNETСтраница сборки, проект DirectX.Capture-2005 сделал.Таким образом, для всех файлов в DirectX.Capture-2005 директива DSHOWNET была оценена как true, и, следовательно, элементы внутри директив #if DSHOWNET обрабатывались.

Я не уверен, требует ли решение того, чтовы создаете и используете DSHOWNET часть загрузки CodeProject (например, я не уверен, требуется ли DirectX.Capture), но я представляю, поскольку проект DirectX.Capture определил это, вам придется создавать и использоватьэта сборка для запуска проекта.(Там может быть способ обойти это, я не зашел так далеко. Я бы порекомендовал проверить страницу проекта, чтобы увидеть, есть ли информация о том, что зависит от чего.)

Надеюсь, это поможет!

...