【发布时间】:2016-01-24 19:20:18
【问题描述】:
有一个简短的问题。
我创建了一个新的构建配置并添加了一个名为“TEST”的预处理器指令/符号来测试一些东西。
我正在使用网络表单。当我在 .cs 中执行此操作时
var isTestSet = false
#if TEST
isTestSet = true;
#else
isTestSet = false;
然后在我的 ascx 本身的标记中,我做了一个快速测试:
<% if (isTestSet == true)
alert("test is set");
else
alert("test is not set");
%>
在我的本地开发环境中,这非常有效。如果我在 TEST 中构建解决方案,它会提醒它已设置。当我在调试模式或发布模式下构建它时,它会提醒它没有设置。但是,当我使用我编译的同一个 dll 并将其部署到另一个环境时,它总是显示为 false(似乎永远无法工作)。
有什么想法吗?预处理器指令是否从构建它们的 DLL 中继承?这意味着只要我的 dll 是使用添加符号的新配置构建的,那么它应该被设置,不是吗? 是否需要结转其他任何东西才能使其正常工作?我以为它只是 DLL。
谢谢!
【问题讨论】:
-
预处理器指令在编译之前被处理。如果您需要在运行时测试条件,请使用普通的
if。 -
是的,但是要确认,如果我选择 TEST,构建 dll,然后部署,它绝对应该设置为使用 TEST,不是吗?
标签: c# asp.net visual-studio visual-studio-2012 webforms