有没有什么工具可以预处理C#源文件而不编译它,类似于在GCC中使用-E标志的方式?我尝试了使用GCC-它成功地处理了#if指令,但是它会卡在任何#region指令上...
理想情况下,我希望能够运行该工具来删除任何求值为false的#if块,并可选择标记是否删除/保留注释、#region、#pragma指令等。
为了把这个问题放到上下文中,我想要发布一些源代码,这些代码是一个(更大)项目的一部分,同时删除只与更大项目相关的部分。例如,有些代码块看起来像这样:
请记住,我这里不是在进行构建 - 这纯粹是关于只发布更大项目源代码的子集。任何想法/帮助都会受到赞赏。
理想情况下,我希望能够运行该工具来删除任何求值为false的#if块,并可选择标记是否删除/保留注释、#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
}
}
请记住,我这里不是在进行构建 - 这纯粹是关于只发布更大项目源代码的子集。任何想法/帮助都会受到赞赏。