【发布时间】:2016-01-08 08:04:08
【问题描述】:
由于某些原因,我需要从我的代码中读取 TargetName-Macro 的值。它必须是编译时间常数。 我查看了Reflection.Assembly,但反射似乎对我没有帮助,因为我的模块既不是正在执行的程序集,也不会从反射中获得编译时间常数。
有什么办法可以半动态地进行,例如作为预构建步骤,稍后在我的代码中使用 ProjectSettings-Macros?
【问题讨论】:
-
应不惜一切代价避免条件编译,因为它使代码很难维护。如果你必须这样做,那么设置不同的构建配置,而不仅仅是调试和发布,并让它们设置不同的条件编译符号。然后,您可以在代码中测试这些符号(通过
#if Symbol预编译语法)并相应地设置TargetName-Macro。 -
@DavidArno 我不是在谈论条件编译,我需要知道我的程序集的名称,这显然是一个编译时间常数。我只想在我的代码中提供这些信息。
-
啊,抱歉,我误解了你的问题。我倾向于处理这类事情的方式是通过每次构建事件,例如
echo namespace X { static class AssemblyName { const string Name = ""$(TargetName)""; } } > AssemblyName.cs,然后在代码中引用该文件。 -
@DavidArno 这将是一种解决方法,而不是我想的那样,但现在可以。谢谢!
-
@DavidArno 如果您将此作为答案发布,我会接受。当使用回显多行并附加“>>”时,我得到一个我认为可以接受的结果。
标签: c# macros pre-build-event