Кто-нибудь знает утилиту для предварительной обработки исходного файла C# без ее компиляции, аналогично использованию флага -E в GCC? Я попытался с помощью GCC - он успешно обрабатывает #if
директивы, но давится любые #region
директив ...Имеется ли препроцессор C#?
В идеале я хотел бы иметь возможность запускать инструмент на файл .cs, чтобы удалить любые #if
блок, которые оценивают на false и необязательно указывать, следует ли удалять/оставлять неповрежденные комментарии, #region
, #pragma
и т. д.
Чтобы выразить это в контексте, я хочу, чтобы иметь возможность опубликовать некоторый исходный код, который является частью (много) более крупный проект, в то время как удаление частей, которые имеют отношение только к более крупному проекту. В качестве примера, есть куски кода, которые выглядят так:
#if (SUBPROJECT)
namespace SubProject
#else
namespace CompleteProject
#endif
{
public class SomeClass()
{
#if (!SUBPROJECT)
// This might call a method contained in an assembly that potentially
// won't be available to the sub-project, or maybe a method that hooks
// into a C library via P/Invoke...
string result = CallSomeCleverMethod();
#else
// This might call a method that performs a simplified version of the
// above, but does so without the above's assembly or P/Invoke
// dependencies...
string result = CallSomeSimpleMethod();
#endif
}
}
Пожалуйста, помните, я не пытаюсь делать строит здесь - это чисто о публикации только подмножество исходного кода Большего проекта.
Любые идеи/помощь оценили.
Где я могу получить исполняемый файл? – NightOwl888
Это часть коллекции компиляторов GNU - она, вероятно, уже установлена, если вы используете OS X или Linux. Если вы используете Windows, MinGW - это то, что вам нужно. –
Я нашел тот, который работает здесь: http://mcpp.sourceforge.net/download.html, но исполняемый файл - mccp, а не cpp. – NightOwl888