我无法让 Visual Studio 按照我的预期运行。我创建了 2 个配置文件。一个定义了符号 FOO,另一个定义了符号 BAR。我有这个代码:
static class MyClass{
#if FOO
public static string const MyData="foo defined";
#endif
#if BAR /*yes, I know #elif would work here too.. just trying to be simple*/
public static string const MyData="bar defined";
#endif
}
然后在另一个文件中我有
if(MyClass.MyData=="foo defined").....
好吧,在我的应用程序中,我收到一条错误,指出 MyClass.MyData 未定义。
另外,如果我在 FOO 配置文件上有它并输入类似的内容#error test
之后#if FOO
那么它将出现构建错误,但如果我删除它,它将构建得很好,当我运行它时,我会得到一个编译错误,指出 MyClass 不包含 MyData 的定义。另外,这是一个 ASP.Net Web 应用程序。
有人可以帮我弄清楚如何使用条件编译吗?它的行为就好像 Visual Studio 使用编译符号正确编译它一样,但是每当 ASP.Net Web 服务器执行它时,它都会在没有任何符号的情况下重新编译它......但这没有任何意义为什么要这样做......
编辑:
我使用 FOO 还是 BAR 配置文件并不重要,它们似乎都没有按照应有的方式定义 MyData 符号。
EDIT2:
好吧,这对于繁殖很重要!
创建一个新的App_Code
解决方案中的文件夹,然后在其中添加一个 .cs 文件,然后将 MyClass 添加到其中。这将重现在空白项目中运行的错误。我实际上已经将其简化为
#if !(FOO || BAR)
#error neither foo or bar defined
#endif
Visual Studio 似乎没有为 App_Code 内的常规 .cs 文件设置条件编译符号