安全性警告對話方塊 (MSBuild 專案檔)
更新:2007 年 11 月
在 Visual Studio 2005 (含) 以後版本中,您可以自訂 MSBuild 專案檔來重新定義建置處理序。當專案一載入到整合式開發環境 (IDE) 後,專案檔中所定義的建置處理序有某些部分會在設計階段執行。[安全性警告] 對話方塊會偵測可能有安全性風險的自訂專案檔,並可讓您選擇 IDE 應如何開啟專案。
UI 項目
其他詳細資料
開啟對話方塊,說明為什麼判斷專案檔可能有安全性風險。載入專案進行瀏覽
在加強安全性的 IDE 中開啟專案。這個選項可讓您瀏覽專案的內容,但部分功能會受到限制,例如 IntelliSense。當載入專案進行瀏覽時,像是建置、清除、發行或開啟設計工具這類的動作可能仍然不安全。以一般方式載入專案
在 IDE 中以一般方式開啟專案。如果您信任來源而且也了解可能包含的安全性風險,可以使用這個選項。IDE 不會限制任何專案功能,下次開啟這個專案時也不會再出現提示。在開啟此方案的每個專案時詢問我
選取這個選項時,只要開啟方案中的專案,就會出現提示。
判斷 Unsafe 專案檔
將專案檔判斷為可能含安全性風險的原因有數個。這些原因包括:
專案檔包含一個或多個非標準的 Import 項目
專案檔覆寫一個或多個可能不安全的目標,如需目標的詳細資訊,請參閱 MSBuild 目標
專案檔覆寫一個或多個可能不安全的屬性,如需屬性的詳細資訊,請參閱 MSBuild 屬性
專案檔定義一個或多個可能不安全的項目,如需項目的詳細資訊,請參閱 MSBuild 項目
專案檔包含一個或多個 UsingTask 項目
專案項目位於可能不安全的位置
非標準的 Import 項目
標準的 .targets 檔清單會儲存在登錄中,位於 HKEY_LOCALMACHINE\Software\Microsoft\VisualStudio\8.0\MSBuild\SafeImports\。如果專案檔匯入不是儲存在登錄中的 .targets 檔,即會判斷為可能有安全性風險。
可能危險的目標
IDE 在載入專案的同時會執行數個目標。如果其中一個目標在自訂專案檔中遭到覆寫,即會視為可能有安全性風險。IDE 載入專案同時所執行的目標包括下列︰
Compile
GetFrameworkPaths
AllProjectOutputGroupsDependencies
AllProjectOutputGroups
CopyRunEnvironmentFiles
ResolveComReferences
ResolveAssemblyReferences
ResolveNativeReferences
可能危險的屬性
下列清單將說明可能為危險屬性的幾種基本類型:
在可能為危險目標的 DependsOn 屬性 (Attribute) 中所使用的屬性 (Property)
在安全 .targets 檔中使用的 Import 項目中,Project 屬性 (Attribute) 所使用的屬性 (Property)
可能危險的目標或其工作所使用的屬性
以底線 (_) 開頭的屬性
IDE 也使用一些特殊的屬性來管理可能危險的目標、項目和屬性。專案檔中的這些屬性不能被覆寫。特殊屬性如下所示:
LoadTimeSensitiveTargets
LoadTimeSensitiveProperties
LoadTimeSensitiveItems
LoadTimeCheckItemLocation
可能危險的項目
在專案檔中,匯入的 .targets 檔所使用的特定項目不能被覆寫。如果覆寫了一個或多個這類項目,則會將專案視為可能有安全性風險。
UsingTask 項目
自訂工作或許會執行可能的 Unsafe 程式碼。因此,所有包含一個或多個 UsingTask 項目的專案檔都會視為可能有安全性風險。
位於可能危險的位置中的專案項目
位於安全 .targets 檔以外位置的部分項目會用使用者定義的專案屬性設定其路徑。為避免項目覆寫重要的檔案,若專案檔含有的項目路徑判定為位於下列其中一個位置,或這些位置的任何子目錄,會將專案檔視為可能有安全性風險,除非這些專案檔也位於方案檔或專案檔目錄中或其下方:
任何磁碟的根目錄
Windows 目錄,例如 C:\Windows\。
Program Files 目錄,例如 C:\Program Files\。