我无法让 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 未定义。
#error test
此外,如果我将它放在 FOO 配置文件中并在之后输入类似的内容,#if FOO
那么它将出现构建错误,但如果我删除它,它会构建得很好,当我去运行它时,我会得到一个编译错误MyClass 不包含 MyData 的定义。此外,这是一个 ASP.Net Web 应用程序。
有人可以帮我弄清楚如何使用条件编译吗?它就像 Visual Studio 使用编译符号正确编译它一样,但是每当 ASP.Net 网络服务器执行它时,它会在没有任何符号的情况下重新编译它......但这只是没有任何意义为什么它会这样做......
编辑:如果我使用 FOO 或 BAR 配置文件并不重要,它们似乎都没有按照应有的方式定义 MyData 符号。
编辑2:
好的,这对复制很重要!!!在您的解决方案中创建一个新App_Code
文件夹,然后在其中添加一个 .cs 文件,然后将 MyClass 添加到其中。这将重现在空白项目中工作的错误。我实际上已将其简化为
#if !(FOO || BAR)
#error neither foo or bar defined
#endif
似乎 Visual Studio 没有为 App_Code 内的常规 .cs 文件设置条件编译符号