.NET Framework 3.5 SP1 原始碼已開放參考檢視

前幾天在 Reference Source Code Center Team Blog 已經公告 .NET Framework 3.5 SP1 的部分原始碼已經掛到 Reference Source Code Center (RSCC) 伺服器了,這代表各位可以在 Visual Studio 2008 中針對這些已開放的組件進行原始碼偵錯,另一方面也可以從 .Net Framework Library 學習到更深的技術細節。

第一波已開放原始碼的組件有如下項目,未來還會針對 WPF 相關的組件也開放原始碼:

  • mscorlib.dll
  • Microsoft.Visualbasic.dll
  • System.dll
  • System.Web.Routing.dll
  • System.Data.dll
  • System.ComponentModel.DataAnnotations.dll
  • system.Drawing.dll
  • System.Web.Abstractions.dll
  • System.Web.dll
  • System.Web.DynamicData.Design.dll
  • System.Web.Extensions.dll
  • System.Web.DynamicData.dll
  • System.Windows.Forms.dll
  • System.Web.Extensions.Design.dll
  • System.Xml.dll

若你要在 Visual Studio 2008 中追蹤 .NET Framework 3.5 SP1 的原始碼,可以從這裡得知如何設定,以下是我設定的心得分享:

1. 首先,你的 Visual Studio 2008 必須先升級至 SP1

2. 開啟選項視窗,選單 Tools / Options

3. 找到 Debugging / General 節點設定,然後對以下兩個設定做出改變:

    * 將 Enable Just My Code (Managed Only) 取消選取

    * 將 Enable source server support 勾選

Microsoft Visual Studio - Tools - Options - Debugging - General

4. 然後再切換到 Debugging / Symbols 設定

先新增 Symbol file locations 到 http://referencesource.microsoft.com/symbols

然後再設定動態下載的 Symbols 資料要存放的位置,你可以設定任何路徑,例如:G:\Symbols

Microsoft Visual Studio - Tools - Options - Debugging - Symbols

5. 最後,會出現一個 Security Alert 問題要不要啟用 Source Server 功能,回答 Yes 即可。

Microsoft Visual Studio - Security Alert

若你要測試有沒有設定成功,可以用以下步驟:

  1. 先在任意專案中設置中斷點(breaking point)
  2. 然後按下 F5 鍵進入偵錯模式,但由於第一次使用會動態下載所有該專案會用到的組件 Symbol 檔(包括原始檔),所以時間會花比較長,我大約下載了 30 分鐘吧,請各位耐心等待!
  3. 之後就可以用單步執行(F10 / F11)進行原始碼查,但第一次用的時候會先看到 End User License Agreement (EULA) ,按下 Accept 即可。

    End User License Agreement (EULA) 

相關連結

  

此文章由 will 發表於 2008/8/31 上午 12:00:04

永久連結 | 評論 (0) | 此文章的RSSRSS comment feed |

分類: .Net | C# | Visual Studio

標籤:

收藏:

介紹好用工具:HWiNFO32 ( 查詢主機硬體資訊 )

當我想查詢自己電腦主機的硬體資訊時,在以前我最愛用的軟體是 EVEREST Home Edition,不過缺點是 EVEREST Home Edition 無法在有 AD 的環境下使用,自從我公司導入 AD 之後我就再也沒在用了。但最近我找到了 HWiNFO32™ 免費軟體,功能一樣強大、資訊一樣很清楚。

HWiNFO32 執行畫面 

處了詳細的資料外,在視窗的工具列還提供了 Summary 工具方便查看常見的資訊,例如:CPU, Motherboard, Drives, Video/Other 等。

System manufacturer

另外,還有 Benchmark 工具可以查看主機的實際效能,包括 CPU 執行效能, Memory 傳輸速率與 Disk 的讀取速度等。

HWiNFO32 - Benchmark

HWiNFO32 - Benchmark Results

我覺得有這些資訊就很夠啦,以後終於不用再拆主機辛苦的查這些資訊了。

備註:EVEREST Home Edition 在原廠已經不提供下載了,不過各位還是可以到各大軟體下載網站取得。

相關連結

  

此文章由 will 發表於 2008/8/30 上午 12:01:40

永久連結 | 評論 (4) | 此文章的RSSRSS comment feed |

分類: 介紹好用工具

標籤:

收藏:

解決【規劃的新資料庫擁有者已經是資料庫的使用者】問題

之前我有寫過一篇開發 ASP.NET 使用 SQL Server 2000 要注意權限是否足夠,但同樣的問題今天又有同事遇到了,不過當我要將該使用者設定為該資料庫的擁有者時,SQL 2000 卻回應我「規劃的新資料庫擁有者已經是資料庫的使用者」錯誤訊息,不過用這段訊息去搜尋什麼也找不到,通常我都將特定的關鍵字翻譯成英文後再去查詢就會查到了,而這段話的英文其實是 "The proposed new database owner is already a user in the database",當然,我也因此找到了解答。

我的資料庫使用者名稱是 User1,登入帳號為 User1,而該使用者已經新增到該資料庫了,所以才無法被指派為該資料庫的使用者。

解決的方法就是先將該使用者從資料庫中刪除,然後就可以從「資料庫屬性」的「檔案」頁籤指定新的擁有者了,而擁有者就直接選取 User1 登入帳號即可。

image

不過,你可別想從資料庫的 [安全性] -> [使用者] 再新增 User1 進去阿,因為他會回應你【登入已經具有一個不同使用者名稱之下的帳號。】

你不用再新增使用者,即可用 User1 登入帳號存取此資料庫了,因為 User1 已經是本資料庫的擁有者了。

P.S. 這問題只有在使用 Visual Studio 2005/2008 + SQL Server 2000 開發專案,且需進入除錯模式(Debug Mode)時才會出現的問題。

相關連結

  

此文章由 will 發表於 2008/8/29 上午 09:06:14

永久連結 | 評論 (0) | 此文章的RSSRSS comment feed |

分類: SQL Server | Visual Studio

標籤: ,

收藏:

介紹好用工具:FxCop ( 靜態程式碼分析 )

FxCop 是一種靜態程式碼分析工具,主要是用來分析採用 .NET 技術開發的組件(Assembly)品質,其中分析的規則也多達上百條(FxCop 1.36 預設有 197 種規則),並依照不同的領域分門別類,大致有以下類別:

  • 設計警告 ( Design Rules )
    支援 .NET Framework 設計方針所指定之正確程式庫設計的警告。
  • 全球化警告 ( Globalization )
    支援世界性程式庫和應用程式的警告。
  • 互通性警告 ( Interoperability )
    支援與 COM 用戶端互動的警告。
  • 維護性警告 ( Maintainability )
    維護性警告支援程式庫和應用程式維護。
  • 命名警告 ( Naming )
    支援遵守 .NET Framework 設計方針之命名慣例的警告。
  • 效能警告 ( Performance )
    支援高效能程式庫和應用程式的警告。
  • 可攜性警告 ( Portability )
    可攜性警告會支援各種不同平台的可攜性。
  • 可靠性警告 ( Reliability )
    支援程式庫和應用程式可靠性的警告,如正確的記憶體和執行緒用法。
  • 安全性警告 ( Security )
    支援更安全之程式庫和應用程式的警告。
  • 用法警告 ( Usage )
    支援適當使用 .NET Framework 的警告。

[ 以上資訊摘自 MSDN Managed 程式碼的程式碼分析警告 單元 ]

這些檢查規則(Rules)都是微軟在開發 .NET Class Library 時提出的各種程式設計的規範與警告,讓工程師們能夠寫出好用且易於維護的程式碼,FxCop 原意是要提供給開發類別庫(Class Library)的開發人員用的,只不過若一般的 .Net 應用程式也能夠遵照這些 Rules 開發的話,想必也能夠獲益良多,我覺得任何 .NET 工程師應該都要試試 FxCop 工具。

若要使用 FxCop 有幾個基本的步驟,如下:

1. 新增專案

Microsoft FxCop - New Project

2. 新增檢查目標,並選擇一個至多個 .NET 組件

Microsoft FxCop - Add Targets

3. 選擇要檢查的規則:在 FxCop 中雖然 Rules 這麼多,但如果全部都套用的話也其實不太實際,你可以選擇部分檢查規則就好,只要切換到 Rules 頁籤後,勾選你想要檢查的類別或特定項目即可。

Microsoft FxCop - Rules Tab

4. 按下 Analyze 按鈕進行程式碼檢查

Microsoft FxCop - Targets - Begin Analysis

5. 最後就是查看報表了,你可以在右側的檢查項目上選取 Properties 查看警告的詳細

Microsoft FxCop - Report

而在 Message Details 視窗裡有許多資訊可以查看,如下圖 Issues 頁籤可看到 Resolution (解決方式)

Microsoft FxCop - Message Details - Issues

Rule Details 提供了更詳細的說明

Microsoft FxCop - Message Details - Rule Details

Message 頁籤提供該條警告偵測到的方法(Method)

 Microsoft FxCop - Message Details - Message

Rules Support 頁籤提供了該條規則所提供支援訊息,其中 URL 的連結會連到 MSDN 看到該規則詳細的說明,而且是中文的喔!

Microsoft FxCop - Message Details - Rule Support

而最後的 Notes 可以讓 Code Review 的人員填入自己的筆記備查

Microsoft FxCop - Message Details - Notes

其他的部分就讓各位自己去發掘啦!

目前最新的 FxCop 是在 2008/8/13 發佈的 1.36 正式版,除此之外 FxCop 工具也早已整合進 Visual Studio Team System 產品中,在這次的 Visual Studio 2008 SP1 更新中也包括 FxCop 1.36 的更新。

備註:如果你之前已經安裝了FxCop 1.36 Beta 2,在安裝FxCop 1.36之前需要先解除安裝 Beta 2 才能安裝正式版。

相關連結

  

此文章由 will 發表於 2008/8/28 下午 02:40:44

永久連結 | 評論 (0) | 此文章的RSSRSS comment feed |

分類: .Net | C# | Security | 介紹好用工具

標籤:

收藏:

SQL Server 2008 範例資料庫下載

好像在十幾天前微軟就已經放出了 SQL Server 2008 範例資料庫可供下載,未來如果各位要下載由微軟提供的範例資料庫,其實都可以到 CodePlexhttp://www.codeplex.com/MSFTDBProdSamples 專案網址查看。

SQL Server Sample Databases

而另一個由社群提供的資料庫範例可以到 http://codeplex.com/SqlServerSamples 下載,這裡提供的範例資料庫就更完整、更多了。

Microsoft SQL Server Community Projects & Samples

  

此文章由 will 發表於 2008/8/27 上午 08:49:29

永久連結 | 評論 (0) | 此文章的RSSRSS comment feed |

分類: SQL Server

標籤: ,

收藏:

如何透過 Visual Studio 對任何不在專案內的程式進行除錯

前天我有提到如何在 Visual Studio 中利用 Attach to Process 功能可以對任意執行中的程式進行除錯。但有時後程式一啟動就立即發生錯誤,導致程式難以除錯,遇到這種情況其實在 Visual Studio 也是有解的!

首先,先透過 [File] / [Open] / [Project/Solution] 開啟執行檔:

Visual Studio - [File] / [Open] / [Project/Solution]

然後直接選取要除錯的執行檔,當成一個專案來開啟。但有一件事必須特別注意,如果該執行檔沒有附帶符號檔(Symbol File)的話,幾乎無法除錯,因為 Symbol File 中包含了許多原本程式的資訊,包括原始檔路徑、程式行數與許多有用的除錯資訊。以下圖為例,ConsoleApplication5.exe 的 Symbol File 就是 ConsoleApplication5.pdb。

Visual Studio - Open Project

開啟後的 Solution Explorer 就會出現該執行檔,此時只要按下 F5 就可以啟動該程式並進入除錯模式了。

Visual Studio - Solution Explorer

當出現例外狀況(Exception)時,Visual Studio 預設會先到你原本編譯時原始檔的目錄下抓取原始檔,用以標示發生錯誤的地方。但如果該程式不是你寫的,或除錯時原始檔不在原本路徑的話,Visual Studio 就會跟你要此程式的原始檔,如果有的話你可以指定給他,若沒有就直接按取消也行。

Visual Studio - Find Source: Program.cs

在這裡我們假設沒有原始碼,按下取消後 Visual Studio 會問你要不要使用 Disassembly 進行除錯,當你使用 Disassembly 進行除錯就會看到最原始的 .NET 原始碼 ( IL )與例外狀況的摘要資訊,當然你也可以按下 View Detail 用以查看完整的 Stack Trace 資訊,有了這些線索通常都可以很順利的找到問題所在。

Visual Studio - Debugging - Disassembly

  

此文章由 will 發表於 2008/8/26 上午 08:49:41

永久連結 | 評論 (2) | 此文章的RSSRSS comment feed |

分類: .Net | Visual Studio

標籤:

收藏:

手動設定網址對應 IP 的方式

手動設定網址對應 IP 的技巧其實是很基礎的系統管理知識,不過好像還是有許多新手開發人員不知道可以這樣設定,今天我就來說說這個好用的技巧。

當我們網站建置完成後需要將程式與資料庫安裝到正式主機上,而通常都是先將程式、資料庫都設定正確,最後才是請系統管理員設定 DNS 讓 Domain Name 對應到正式主機的 IP,而設定 DNS 的過程通常會需要幾個小時的時間進行轉換,這導致我們很難立即透過「正式」的網址進行連線測試。

這問題尤其會影響到當我們使用 Google Maps API 開發的網站時,因為 Google Maps API 需要註冊一組 Registration Key,而這組 Key 是與 Domain Name 連動的,如果 DNS 遲遲沒設定完成,就很難自行測試或讓客戶來測試。當然,不只是 Google Maps API 會有這個問題,任何其他網站提供的 API 大多都是跟 Domain Name 做關連的。

除此之外,若公司內部採 NAT 架構連線上網的話,通常在內部架設的網站「對外」與「對內」的 IP 是不一樣的,如果系統管理員沒有將 DNS 設定好的話,你自己也可以透過修改 hosts 檔將對外的 Domain Name 改對應到內部的 IP 位址。

無論是 Windows 主機或 Linux 主機都有個 hosts 檔案,裡面定義著讓本機使用的 Domain Name <--> IP 對應表,任何程式在進行網路連線時通常會進行 DNS 伺服器進行 IP 的查詢,不過在查詢之前都一定會先來 hosts 檔查詢是否已經有定義過該 Domain Name 的對應 IP,如果沒有的話才會正式進行 DNS 查詢。

在 Windows 下通常 hosts 檔的路徑如下:

C:\WINDOWS\system32\drivers\etc\hosts

在 Linux 下通常 hosts 檔的路徑如下:

/etc/hosts

在 Windows 下的 hosts 檔案格式與 Linux 下的 hosts 檔案格式完全相同,以 Windows 為例,通常預設的內容如下:

# Copyright (c) 1993-1999 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
#      102.54.94.97     rhino.acme.com          # source server
#       38.25.63.10     x.acme.com              # x client host

127.0.0.1       localhost

預設只會有一筆資料,也就是 localhost 對應到 127.0.0.1 (本機IP),這就是為什麼我們常常看到 localhost 的原因。

我們如果要新增新的 Domain Name <--> IP 對應,只要用記事本(Notepad)開啟該檔,並新增一行到最後面即可完成,第一欄輸入 IP 然後加些空白,再輸入 Domain Name 即可。例如:

10.0.0.55   testing.miniasp.com

除此之外也需要提醒各位,有些惡意軟體(malicious software)或病毒軟體(virus software)會直接修改你的 hosts 檔案,讓你的誤以為連到正常的網站,但事實上卻連到惡意的網站。例如說若有軟體將你的 hosts 修改成如下:

10.0.2.34   tw.yahoo.com

這樣你以後連到 http://tw.yahoo.com 就會改連到 10.0.2.34 這個 IP 了,這是個很危險的事,這樣的資安攻擊事件幾乎很難查詢異狀,所以定時檢查 hosts 檔案是有必要的。

  

此文章由 will 發表於 2008/8/25 上午 08:45:11

永久連結 | 評論 (0) | 此文章的RSSRSS comment feed |

分類: Linux | Security | Web | 系統管理

標籤:

收藏:

如何透過 Visual Studio 對任意網站的 JavaScript 除錯

在 Visual Studio 2005/2008 的[工具]選單中有個 Attach to Process 功能,可以將目前正在執行中的程序「附加」到 Visual Studio 的除錯工具(Debugger)中,讓 Visual Studio 隨時可以對任意程序進行除錯工作。這是個很方便的功能,你甚至可以不用先開啟方案檔或專案,就可以直接透過 Attach to Process 功能進行除錯,當然這也包括針對 Internet Explorer 進行除錯。

 Visual Studio / Tools / Attach to Process

當開啟 Attach to Process 後,會讓你選擇目前正在執行的程序(Process),如下圖示,我的 IE 開了一個網站到 http://www.miniasp.com/,在 Available Process 清單中的 Title 欄位很容易可以辨認出哪一個行程(Process)是你要的,選擇確定後按下右下角的 Attach 按鈕,就會進入除錯模式了。當 IE 被附加(Attach)上去後,若有任意網站的 JavaScript 出現錯誤,Visual Studio 就會直接將程序暫停,並進入中斷點,讓你仔細的看看哪裡出問題了,我好幾次都是透過這個方式協助我解決已上線網站的細微錯誤。

Visual Studio - Attach to Process

不過,如果要能正確除錯 JavaScript,還必須檢查你「網際網路選項」中的「進階」設定,其中的「停用指令碼除錯 (Internet Explorer)」與「停用指令碼除錯 (其他)」不能被勾選。

 「網際網路選項」中的「進階」設定

相關連結

  

此文章由 will 發表於 2008/8/24 下午 03:22:38

永久連結 | 評論 (2) | 此文章的RSSRSS comment feed |

分類: JavaScript | Visual Studio

標籤: ,

收藏:

SQL2008 Express with Tools 與 Advanced Services 已發行

前幾天微軟先發布了 Microsoft SQL Server 2008 Express 版,但是 SQL Server 2008 Express with ToolsSQL Server 2008 Express with Advanced Services 卻沒有同時發布,不過今天已經正式發布了。

SQL Server 2008 Express with Tools 就是 SQL Server 2008 Express 外加 SQL Server 2008 Management Studio Basic 版,可以讓您輕鬆管理 SQL Server 2008 Express 資料庫。

SQL Server 2008 Express with Advanced Services 除了包括 SQL Server 2008 Express with Tools 的內容外,還包括強大的報告(Reporting)與進階文字搜尋功能,可對 SQL Server 資料表中一般字元類型的資料發出全文檢索查詢。全文檢索查詢可以包含單字和片語,或者單字或片語的多種形式。

SQL Server 2008 Express with Tools 的下載說明有提到幾個標準的安裝步驟,我摘要如下:

步驟 1:下載並安裝 Microsoft .Net Framework 3.5 SP1

步驟 2:下載並安裝 Windows Installer 4.5

步驟 3:下載並安裝 Windows PowerShell 1.0

步驟 4:下載並安裝 SQL Server 2008 Express with Tools SQL Server 2008 Express with Advanced Services

不過當我在安裝 SQL Server 2008 Express with Tools 的時候,有發現到安裝之前的檢查項目中還會提示【SQL Server 2005 Express Tools 需先移除】,你只要從控制台中的【新增或移除程式】將 Microsoft SQL Server Management Studio Express 移除即可。

相關連結

  

此文章由 will 發表於 2008/8/23 下午 02:14:00

永久連結 | 評論 (2) | 此文章的RSSRSS comment feed |

分類: SQL Server

標籤:

收藏:

使用 SecureString 類別保護你的字串值

我們其實可以透過許多工具取得 .Net 應用程式執行時在記憶體中的資料,例如:WinDbgDebug Diagnostic Tool。而當你在 .Net 程式中需要將一些較機密的資料暫存在變數(物件)時,若單純的使用 System.String 類別建立執行個體(Instance)儲存資料,就很容易被一些除錯工具或傾印(dump)工具取得原始資料,原因是 System.String 類別是不變的(immutable),且當不再需要它時也無法透過程式排程進行記憶體回收。所以當你使用 System.String 類別儲存文字內容在記憶體中,就很難保證在物件不用了之後能夠即時在記憶體中刪除,這樣的程式就有被資訊揭露(Information Disclosure)的安全風險。

如果你的 .Net 應用程式並非執行在自己所能管控的主機上,安全性的考量就更高了,這時你就可以考慮使用 SecureString 類別來保護你的字串值。而 SecureString 物件與 String 物件的相似之處在於他們儲存的資料都是字串值。不過,SecureString 物件的字串值會「自動加密」,而且你也可以在您的 .Net 應用程式中將物件標示為唯讀前進行修改,也可以由應用程式或 .NET Framework 記憶體回收行程將其從電腦記憶體中刪除,這樣就能夠確保你要存取的字串值在記憶體中也能夠受到保護。

因為最近在看 Windows PowerShell 實戰手冊 (Windows PowerShell in Action) 這本書,在第 523 頁提到了個 SecureString 類別,感覺蠻不錯的,所以推薦給大家知道。

相關連結

  

此文章由 will 發表於 2008/8/22 下午 12:38:10

永久連結 | 評論 (0) | 此文章的RSSRSS comment feed |

分類: .Net | Security

標籤: ,

收藏: