指定資源的 C# 編譯器選項
下列選項可控制 C# 編譯器如何建立或匯入 Win32 資源。 新的 MSBuild 語法會以「粗體」顯示。 較舊的 csc.exe 語法會以code style
顯示。
- Win32Resource /
-win32res
:指定 Win32 資源檔 (.res)。 - Win32Icon /
-win32icon
:從指定的組件檔案或檔案參考中繼資料。 - Win32Manifest /
-win32manifest
:指定 Win32 資訊清單檔 (.xml)。 - NoWin32Manifest /
-nowin32manifest
:請勿包含預設的 Win32 資訊清單。 - Resources /
-resource
:內嵌指定的資源 (簡短格式:/res)。 - LinkResources /
-linkresources
:將指定的資源連結至此組件。
注意
如需為專案設定這些選項的詳細資訊,請參閱 [編譯器選項]。
Win32Resource
Win32Resource 選項會將 Win32 資源插入至輸出檔案中。
<Win32Resource>filename</Win32Resource>
filename
是您想要新增至輸出檔案的資源檔。 Win32 資源可以包含版本或點陣圖 (圖示) 資訊,這項資訊可以協助您在 [檔案總管] 中識別應用程式。 如果您未指定此選項,編譯器會根據組件版本產生版本資訊。
Win32Icon
Win32Icon 選項會在輸出檔案內插入一個 .ico 檔,讓輸出檔案在檔案總管中具有所需的外觀。
<Win32Icon>filename</Win32Icon>
filename
是您想要新增至輸出檔案的 ..ico 檔案。 .ico 檔案可以使用 Resource Compiler (資源編譯器) 建立。 資源編譯器是在編譯 Visual C++ 程式時叫用,而 .ico 檔案則是從 .rc 檔案建立。
Win32Manifest
使用 Win32Manifest 選項,指定要內嵌到專案之可攜式執行檔 (PE) 中的使用者定義 Win32 應用程式資訊清單檔。
<Win32Manifest>filename</Win32Manifest>
filename
是自訂資訊清單檔的名稱和位置。 根據預設,C# 編譯器會內嵌應用程式資訊清單,以指定所要求的 "asInvoker" 執行層級。 這會在建置可執行檔的同一個資料夾中建立資訊清單。 如果您要提供自訂資訊清單,例如指定 "highestAvailable" 或 "requireAdministrator" 做為要求的執行層級,請使用此選項指定檔案名稱。
注意
此選項與 Win32Resources 選項互斥。 如果您嘗試在相同的命令列中使用這兩個選項,則會收到建置錯誤。
如果應用程式的應用程式資訊清單未指定要求的執行層級,則會受限於 Windows 中「使用者帳戶控制」功能下的檔案和登錄虛擬化。 如需詳細資訊,請參閱使用者帳戶控制。
如果符合上述任一個條件,您的應用程式將會受限於虛擬化︰
- 您可以使用 NoWin32Manifest 選項,而且未提供後面建置步驟中的資訊清單,或未使用 Win32Resource 選項將資訊清單做為 Windows 資源 (.res) 檔案的一部分。
- 您可以提供未指定所要求執行層級的自訂資訊清單。
Visual Studio 會建立預設 .manifest 檔案,並將它與可執行檔一起儲存在偵錯和發行目錄中。 您可以在任何文字編輯器中建立自訂資訊清單,然後將檔案新增至專案,來新增自訂資訊清單。 或者,您可以使用滑鼠右鍵按一下方案總管中的 [專案] 圖示,並選取 [新增項目],然後選取 [應用程式資訊清單檔]。 新增全新或現有資訊清單檔之後,它將顯示在 [資訊清單] 下拉式清單中。 如需詳細資訊,請參閱專案設計工具、應用程式頁面 (C#)。
您可以使用 NoWin32Manifest 選項,提供應用程式資訊清單做為自訂建置後步驟或 Win32 資源檔的一部分。 如果您想要應用程式受制於 Windows Vista 上的檔案或登錄虛擬化,請使用這個相同的選項。
NoWin32Manifest
使用 NoWin32Manifest 選項指示編譯器不要將任何應用程式資訊清單內嵌在可執行檔中。
<NoWin32Manifest />
使用此選項時,應用程式在 Windows Vista 上會虛擬化,除非您在 Win32 資源檔案中或於更新版本組建步驟期間提供應用程式資訊清單。
在 Visual Studio 中,選取 [資訊清單] 下拉式清單的 [建立無資訊清單應用程式] 選項,在 [Application Property] (應用程式屬性) 頁面中設定這個選項。 如需詳細資訊,請參閱專案設計工具、應用程式頁面 (C#)。
資源
將指定的資源內嵌到輸出檔。
<Resources Include=filename>
<LogicalName>identifier</LogicalName>
<Access>accessibility-modifier</Access>
</Resources>
filename
是您想要內嵌到輸出檔案的 .NET 資源檔。 identifier
(選用) 是資源的邏輯名稱;用來載入資源的名稱。 預設值是檔案的名稱。 accessibility-modifier
(選用) 資源的存取範圍:公用或私人。 預設值是公用。 根據預設,使用 C# 編譯器建立資源時,這些資源在組件中為公用狀態。 若要將資源設為私用,可將 private
指定為存取範圍修飾詞。 不允許 public
或 private
以外的其他存取範圍。 例如,如果 filename
是由 Resgen.exe 或是在開發環境中所建立的 .NET 資源檔,就可以使用 System.Resources 命名空間中的成員進行存取。 如需詳細資訊,請參閱System.Resources.ResourceManager。 對於其他所有資源,請使用 Assembly 類別中的 GetManifestResource
方法,以在執行階段存取資源。 輸出檔案中資源的順序是從專案檔中指定的順序決定。
LinkResources
在輸出檔案中建立 .NET 資源連結。 資源檔不會新增至輸出檔案。 LinkResources 與 Resource 選項不同;後者會將資源檔內嵌在輸出檔案中。
<LinkResources Include=filename>
<LogicalName>identifier</LogicalName>
<Access>accessibility-modifier</Access>
</LinkResources>
filename
是您要從組件連結的 .NET 資源檔。 identifier
(選用) 是資源的邏輯名稱;用來載入資源的名稱。 預設值是檔案的名稱。 accessibility-modifier
(選用) 資源的存取範圍:公用或私人。 預設值是公用。 根據預設,使用 C# 編譯器建立連結資源時,這些資源在組件中為公用狀態。 若要將資源設為私用,可將 private
指定為存取範圍修飾詞。 您只能使用 public
或 private
修飾詞。 例如,如果 filename
是由 Resgen.exe 或是在開發環境中所建立的 .NET 資源檔,就可以使用 System.Resources 命名空間中的成員進行存取。 如需詳細資訊,請參閱System.Resources.ResourceManager。 對於其他所有資源,請使用 Assembly 類別中的 GetManifestResource
方法,以在執行階段存取資源。 filename
中指定的檔案可以為任何格式。 例如,您可能需要產生組件的原生 DLL 部分,以便安裝到全域組件快取中,並從組件的 Managed 程式碼存取。 您可以在組件連結器中執行相同的動作。 如需詳細資訊,請參閱 Al.exe (組件連結器) 和使用組件和全域組件快取。