共用方式為


安全性警告對話方塊 (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\。

請參閱

概念

MSBuild

其他資源

MSBuild 參考

MSBuild 概念