有没有人知道一个实用程序来预处理C#源文件而不编译它,就像在GCC中使用-E标志一样?我尝试使用GCC – 它成功地处理了#if指令,但它在任何#region指令上都会窒息……
理想情况下,我希望能够在.cs文件上运行该工具以删除任何评估为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 } }
请记住,我不打算在这里进行构建 – 这纯粹只是发布一个较大项目的源代码的子集.
任何想法/帮助表示赞赏.