加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

是否存在C#预处理工具?

发布时间:2020-12-15 08:48:06 所属栏目:百科 来源:网络整理
导读:有没有人知道一个实用程序来预处理C#源文件而不编译它,就像在GCC中使用-E标志一样?我尝试使用GCC – 它成功地处理了#if指令,但它在任何#region指令上都会窒息…… 理想情况下,我希望能够在.cs文件上运行该工具以删除任何评估为false的#if块,并且可选地能够
有没有人知道一个实用程序来预处理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
  }
}

请记住,我不打算在这里进行构建 – 这纯粹只是发布一个较大项目的源代码的子集.

任何想法/帮助表示赞赏.

解决方法

事实证明,直接使用GNU C预处理器(cpp)(而不是通过gcc)可以更好地控制输出.使用这个,我能够以合适的方式处理源文件……

这是一个例子:

cpp -C -P -DSUBPROJECT Input.cs Output.cs

我试图让Visual Studio提供的C/C++编译器做类似的事情,但一段时间后就放弃了……

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读