gpt4 book ai didi

c# - 引用程序集中的条件编译

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

我正在编写一个程序集,其中包含一些条件编译的成员,例如:

[Conditional("DEBUG")]
public static void Log(string message) { /*...*/ }

像这样使用它:

public void DoStuff() {
Log("This will only appear on debug builds");
/* ... Do stuff ... */
}

但是当我将此程序集提供给某人在他们的项目中使用时,我希望他们能够定义是否编译 DEBUG 条件成员。

如果那不可能(例如,这些方法在编译时被完全删除),那么有什么方法可以打包一个程序集的多个“配置”(例如,可能使用 [AssemblyConfiguration] )并根据配置选择它们引用程序集的?

另外:我不是在寻找在引用程序集的 .csproj 文件中手动设置引用的建议;我知道我可以做到这一点,但它很乏味,而且必须为每个引用文献完成。

最佳答案

[Conditional("DEBUG")] 正是您要找的。 MSDN explanation该属性说:

Indicates to compilers that a method call or attribute should be ignored unless a specified conditional compilation symbol is defined.

但是,该解释(以及许多其他解释)没有提到的是,需要在引用程序集中定义有问题的编译符号。换句话说,如果 Assembly A 包含方法

[Conditional("DEBUG")]
public static void SomeMethod()
{ /* ... */ }

并且您将该程序集编译为 Release,然后 SomeMethod 将被 Assembly B 调用,只要该程序集被编译为 Debug

关于c# - 引用程序集中的条件编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26634744/

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