gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 21:25:53 25 4
gpt4 key购买 nike

有谁知道有一个实用程序可以在不编译的情况下预处理 C# 源文件,其方式类似于在 GCC 中使用 -E 标志?我尝试使用 GCC - 它成功地处理了 #if 指令,但它会阻塞任何 #region 指令...

理想情况下,我希望能够在 .cs 文件上运行该工具以删除任何评估为 false 的 #if block ,并且可以选择标记是否删除/离开完整的注释、#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++ 编译器来做类似的事情,但过了一会儿就放弃了...

关于c# - 是否存在 C# 预处理工具?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/986404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com