Skip to content
January 27, 2013 / windperson

ASP.net Web Site Project使用C# Preprocessor指令

首先,不知道Preprocessor的可以看這篇,其實就跟C裡面的Macro的用處一樣,可以設定在配合不同的建置情況時,編譯到不同部分的程式碼。

再來,是ASP.net Web Site Project的架構,所引起的問題:

  1. Web Stie Project和.net 2.0以後推出而且是建議使用的Web Application Project的差異,可參考這裡
  2. 通常在開發Web Site Project是使用local file system讓ASP.net在IIS, IIS Express, ASP.net Web development server在執行時期即時將.aspx和.aspx.cs匯集編譯成副檔名是.dll的assembly然後在上述的三種web伺服器上執行。
  3. 實際執行的assembly都是最佳化過的,造成使用debugger在中斷點停下來的時候,會無法檢視Session和Request這兩種資料的內容。
  4. Web Site Project沒有控制專案組態的.csproj設定檔,Visual Studio在其它種類型專案有這設定檔的,就可以在該設定檔內定義DEBUG constant讓編譯器產生debug版的assembly。

解決方法就是,在該ASP.net Web Site Project的web.config內加入下述設定在<confiuration>區段內:

<system.codedom>
    <compilers>
      <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
                compilerOptions="/d:DEBUG /d:TRACE">
          <providerOption name="CompilerVersion" value="v4.0"/>
      </compiler>
    </compilers>
</system.codedom>

就可以藉由compilerOptions該屬性來設定C# compiler在編譯時的參數。

reference: http://social.msdn.microsoft.com/Forums/en-US/csharpide/thread/61ad1a74-ae76-47eb-86a9-1bf09f64c906/

Advertisements

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: