有没有人知道一个实用程序来预处理C#源文件而不编译它,就像在GCC中使用-E标志一样?我尝试使用GCC - 它成功地处理了#if指令,但它在任何#region指令上都会窒息......
理想情况下,我希望能够在.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
}
}
Run Code Online (Sandbox Code Playgroud)
请记住,我不打算在这里进行构建 - 这纯粹只是发布一个较大项目的源代码的子集.
任何想法/帮助表示赞赏.
事实证明,直接使用 GNU C 预处理器 (cpp)(而不是通过 gcc)可以更好地控制输出。使用它,我能够以合适的方式处理源文件......
这是一个例子:
cpp -C -P -DSUBPROJECT Input.cs Output.cs
Run Code Online (Sandbox Code Playgroud)
我尝试让 Visual Studio 提供的 C/C++ 编译器做类似的事情,但过了一会儿就放弃了......
| 归档时间: |
|
| 查看次数: |
1912 次 |
| 最近记录: |