【发布时间】:2010-11-02 03:47:04
【问题描述】:
当我编写时,C# 中可靠的旧预处理器指令似乎工作得很好:
#if DEBUG
...
(Some code)
...
#endif
但是,包含在条件块中的属性似乎继续得到处理,我收到错误指示。例如,在条件块中包围 [AssemblyVersion(...)] 似乎没有任何影响。
我可以详细说明为什么我们要有条件地忽略 [AssemblyVersion(..)],但这无关紧要。有什么想法吗?
【问题讨论】:
-
对于此行为的示例,定义两个 AssemblyVersion 属性,并将一个放在条件“#if DEBUG”块内。
-
它被称为预处理指令,在 C# 中它实际上是由编译器处理的。
-
如果您有两个 AssemblyVersion 属性,其中一个位于“#if DEBUG”块内,我希望另一个位于“#else”和“#endif”之间?
-
它是在构建时通过自动构建过程在发布配置中动态添加的。顺便说一句,这是 VS 2008。我从头开始创建的另一个项目不会出现这个问题。这很奇怪。
-
你能发布一个生成输出的例子吗?
标签: c# attributes c-preprocessor