Если вы хотите быть в безопасности, используйте это: Если вы хотите быть в безопасности, используйте это: [110] <form method="post" action="<?php echo htmlspecialchars(
Я разобрался! Я не упомянул ключевую информацию: это был проект Workflow (Guid {14822709-B5A1-4724-98CA-57A101D1B079}). Оказывается, есть ошибка с типом проекта рабочего процесса, а именно с файлом Workflow.Targets, который включен в файл сборки.
Похоже, что препроцессор действует так, как если бы была определена константа DEBUG. Вы можете воспроизвести проблему, создав проект рабочего процесса и добавив его в файл AssemblyInfo:
#if DEBUG
[assembly: AssemblyFileVersion("1.0.0.0")]
#endif
Затем попробуйте сборку выпуска. Я отправил это в MS: https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=466440
С уважением! -Шон
У меня это работает правильно. В моем файле AssemblyInfo.cs у меня есть следующее:
#if DEBUG
[assembly: AssemblyConfiguration("Debug")]
#else
[assembly: AssemblyConfiguration("Release")]
#endif
Глядя на скомпилированную сборку в Reflector, я вижу правильные атрибуты.
Вы должны убедиться, что ваш символ DEBUG определен только в свойствах проекта , а не где-либо еще в вашем коде как фактическая инструкция #define DEBUG. Если он определен непосредственно в коде, он будет действовать только для этого файла, а не для всего проекта. Если указать его в свойствах проекта, он будет действовать для всего проекта.
проще - вы можете пометить свои функции отладки тегом метаданных [Conditional]:
#define DEBUG1
...
public static void PrintText1(string txt) {
Console.Write("This is PrintText2\n");
}
[Conditional("DEBUG1")]
public static void PrintText2(string txt) {
Console.Write("This is PrintText2\n");
}
[STAThread]
static void Main(string[] args) {
PrintText1("This is the unconditional method");
PrintText2("This function will be called only if 'DEBUG1' is defined");
}
попробуйте!
Кроме того, я заметил, что #define
существует только в пределах контекст файла, который он определен, например, вызов PrintText2 из другого файла, где отладка не определена, не будет выполняться. Это также работает и наоборот:
[Conditional("DEBUG1")]
public static void ConditionedPrint(string txt) {
Console.Write("This is PrintText2\n");
}
public static void UnconditionedPrint(string txt) {
ConditionedFunc(txt);
}
UnconditionedFunc напечатает «Это PrintText2 \ n» тогда и только тогда (если и только если) #define DEBUG1 был определен в этом файле, независимо от других файлов.
Еще есть System.Diagnostics.Debug, хотя я не уверен, что он делает.