PRB: JScript .NET Compiler Generates Unexpected Errors for Comments in an .aspx Page (323487)
The information in this article applies to:
- Microsoft ASP.NET (included with the .NET Framework 1.1)
- Microsoft ASP.NET (included with the .NET Framework) 1.0
- Microsoft JScript .NET
This article was previously published under Q323487 SYMPTOMS
When server-side code in an .aspx page contains an at sign (@) immediately after a comment statement, the JScript .NET compiler may generate unexpected errors.
The following code demonstrates this scenario:
Response.Write("working comment"); // comment
Response.Write("causes error"); //@ comment2
Response.Write("causes another error"); //@@@comment3
CAUSE
This problem occurs in both scenarios because of the way that JScript .NET implements preprocessor directives. The .aspx page is transformed into a JScript class file with the preprocessor set to on so that JScript can remap line numbers. This means that the "//@" characters are significant.
RESOLUTION
To resolve this problem, make sure that you are aware of how JScript .NET implements preprocessor directives when you write code in an .aspx page.
To work around this problem, you can vary the commenting style a little. However, Microsoft recommends that you not start comment statements with the "//@" characters. Only use this format for preprocessor statements.
The code that follows demonstrates how to use a version of the code from the "Symptoms" section that does not cause any errors. Also, this code includes two forms of JScript .NET conditional compilation to illustrate how JScript .NET preprocessor statements can appear with different comment statement types.
<%
//Modified version of one of the previous comment statement
//sample. This variation does not cause the compiler error.
// @comment2
//Example that uses conditional compilation to illustrate
//preprocessor statements in JScript .NET.
//@cc_on
//@ var thisWorks : boolean = true;
//@ if(thisWorks){
//@ Response.Write("<br>This works!<br>");
//@ }
//Another variation
/*@if(@_jscript_version >= 5){
Response.Write("JScript Version: " + @_jscript_version);
}
@end
@*/
%>
STATUSThis behavior is by design.REFERENCES
For more information about JScript .NET preprocessor directives, visit the following Microsoft Web site:
Modification Type: | Minor | Last Reviewed: | 7/8/2003 |
---|
Keywords: | kbCompiler kbprb KB323487 |
---|
|