C#-Compileroptionen, die Ressourcen angeben

Mit den folgenden Optionen wird gesteuert, wie der C#-Compiler Win32-Ressourcen erstellt oder importiert. Die neue MSBuild-Syntax wird fett formatiert dargestellt. Die ältere csc.exe-Syntax wird in code style dargestellt.

  • Win32Resource / -win32res: Gibt eine Win32-Ressourcendatei (RES-Datei) an.
  • Win32Icon / -win32icon: Verweist auf Metadaten aus den angegebenen Assemblydateien.
  • Win32Manifest / -win32manifest: Gibt eine Win32-Manifestdatei (XML-Datei) an.
  • NoWin32Manifest / -nowin32manifest: Bindet das Win32-Standardmanifest nicht ein.
  • EmbeddedResource: Embed the specified resource / -resource(Short form: /res).
  • LinkResource / -linkresource: Verknüpfen Sie die angegebene Ressource mit dieser Assembly.

Hinweis

Weitere Informationen zum Konfigurieren dieser Optionen für Ihr Projekt finden Sie unter Compileroptionen.

Win32Resource

Die Option Win32Resource fügt eine Win32-Ressource in die Ausgabedatei ein.

<Win32Resource>filename</Win32Resource>

filename ist die Ressourcendatei, die Sie Ihrer Ausgabedatei hinzufügen möchten. Eine Win32-Ressource kann Versions- oder Bitmapinformationen (Symbol) enthalten, mit denen Ihre Anwendung im Datei-Explorer identifiziert werden kann. Wenn Sie diese Option nicht angeben, generiert der Compiler Versionsinformationen basierend auf der Assemblyversion.

Win32Icon

Die Win32Icon-Option fügt eine .ico Datei in die Ausgabedatei ein, wodurch die Ausgabedatei im Datei-Explorer die gewünschte Darstellung erhält.

<Win32Icon>filename</Win32Icon>

filename ist die ICO-Datei, die Sie Ihrer Ausgabedatei hinzufügen möchten. Mithilfe des Ressourcencompilers können Sie eine .ico Datei erstellen. Der Ressourcencompiler wird aufgerufen, wenn Sie ein Visual C++-Programm kompilieren. Eine .ico Datei wird aus der RC-Datei erstellt.

Win32Manifest

Verwenden Sie die Win32Manifest-Option , um eine benutzerdefinierte Win32-Anwendungsmanifestdatei anzugeben, um sie in die portable ausführbare Datei (PE) eines Projekts einzubetten.

<Win32Manifest>filename</Win32Manifest>

filename ist der Name und Speicherort der benutzerdefinierten Manifestdatei. Standardmäßig bettet der C#-Compiler ein Anwendungsmanifest ein, das eine angeforderte Ausführungsebene angibt asInvoker. Es erstellt das Manifest im selben Ordner, in dem die ausführbare Datei erstellt wird. Wenn Sie ein benutzerdefiniertes Manifest angeben möchten, z. B. um eine angeforderte Ausführungsebene highestAvailable anzugeben, verwenden requireAdministratorSie diese Option, um den Namen der Datei anzugeben.

Hinweis

Die Win32Manifest-Option und die Win32Resource-Option schließen sich gegenseitig aus. Wenn Sie versuchen, beide Optionen in derselben Befehlszeile zu verwenden, wird ein Buildfehler angezeigt.

Eine Anwendung ohne Anwendungsmanifest, die eine angeforderte Ausführungsebene angibt, unterliegt der Datei- und Registrierungsvirtualisierung unter dem Feature "Benutzerkontensteuerung" in Windows. Weitere Informationen finden Sie unter Benutzerkontensteuerung.

Ihre Anwendung unterliegt der Virtualisierung, wenn eine der folgenden Bedingungen zutrifft:

  • Sie verwenden die Option NoWin32Manifest und stellen in einem späteren Buildschritt oder als Teil einer Windows-Ressourcendatei (RES-Datei) kein Manifest bereit, indem Sie die Option Win32Resource verwenden.
  • Sie stellen ein benutzerdefiniertes Manifest bereit, das keine angeforderte Ausführungsebene angibt.

Visual Studio erstellt eine MANIFEST-Standarddatei und speichert sie zusammen mit der ausführbaren Datei in den Debug- oder Releaseverzeichnissen. Sie können ein benutzerdefiniertes Manifest hinzufügen, indem Sie es in einem Text-Editor erstellen und die Datei anschließend zum Projekt hinzufügen. Sie können auch mit der rechten Maustaste auf das Projektsymbol im Projektmappen-Explorer klicken und anschließend Neues Element hinzufügen und dann Anwendungsmanifestdatei auswählen. Nachdem Sie Die neue oder vorhandene Manifestdatei hinzugefügt haben, wird sie in der Dropdownliste "Manifest " angezeigt. Weitere Informationen finden Sie unter Seite „Anwendung“, Projekt-Designer (C#).

Sie können das Anwendungsmanifest als benutzerdefinierten Schritt nach dem Buildvorgang oder als Teil einer Win32-Ressourcendatei bereitstellen, indem Sie die Option NoWin32Manifest verwenden. Verwenden Sie dieselbe Option, wenn Ihre Anwendung der Datei- oder Registrierungsvirtualisierung unter Windows Vista unterliegen soll.

NoWin32Manifest

Verwenden Sie die Option NoWin32Manifest, um den Compiler anzuweisen, kein Anwendungsmanifest in die ausführbare Datei einzubetten.

<NoWin32Manifest />

Wenn Sie diese Option verwenden, unterliegt die Anwendung der Virtualisierung auf Windows Vista, es sei denn, Sie stellen ein Anwendungsmanifest in einer Win32-Ressourcendatei oder während eines späteren Buildschritts bereit.

Legen Sie diese Option in Visual Studio auf der Seite Application Property (Anwendungseigenschaft) fest, indem Sie in der Manifest-Dropdownliste auf die Option Create Application Without a Manifest (Anwendung ohne ein Manifest erstellen) klicken. Weitere Informationen finden Sie unter Seite „Anwendung“, Projekt-Designer (C#).

EmbeddedResource

Bettet die angegebene Ressource in die Ausgabedatei ein.

<EmbeddedResource Include="filename">
  <LogicalName>identifier</LogicalName>
  <Access>accessibility-modifier</Access>
</EmbeddedResource>

filename ist die .NET-Ressourcendatei, die in die Ausgabedatei eingebettet werden soll. identifier (optional) ist der logische Name für die Ressource: der Name, den Sie zum Laden der Ressource verwenden. Der Standardwert ist der Name der Datei. accessibility-modifier (optional) ist die Barrierefreiheit der Ressource: öffentlich oder privat. Der Standardwert ist public. Standardmäßig sind Ressourcen in der Assembly öffentlich, wenn Sie sie mithilfe des C#-Compilers erstellen. Geben Sie private als Modifizierer der Barrierefreiheit an. Es ist keine andere Barrierefreiheit zulässig. Wenn filename es sich um eine .NET Ressourcendatei handelt, die z. B. durch Resgen.exe oder in der Entwicklungsumgebung erstellt wird, können Sie mithilfe von Membern im System.Resources Namespace darauf zugreifen. Weitere Informationen finden Sie unter System.Resources.ResourceManager. Verwenden Sie für alle anderen Ressourcen die GetManifestResource-Methoden in der Assembly-Klasse, um zur Laufzeit auf die Ressource zuzugreifen. Die Reihenfolge der Ressourcen in der Ausgabedatei stammt aus der reihenfolge, die in der Projektdatei angegeben ist.

LinkResource

Erstellt einen Link zur .NET-Ressource in der Ausgabedatei Die Ressourcendateien wird der Ausgabedatei nicht hinzugefügt. LinkResource unterscheidet sich von der EmbeddedResource-Option , die eine Ressourcendatei in die Ausgabedatei einbettet.

<LinkResource Include="filename">
  <LogicalName>identifier</LogicalName>
  <Access>accessibility-modifier</Access>
</LinkResource>

filename ist die .NET-Ressourcendatei, die Sie aus der Assembly verknüpfen möchten. identifier (optional) ist der logische Name für die Ressource: der Name, den Sie zum Laden der Ressource verwenden. Der Standardwert ist der Name der Datei. accessibility-modifier (optional) ist die Barrierefreiheit der Ressource: öffentlich oder privat. Der Standardwert ist public. Verknüpfte Ressourcen sind standardmäßig öffentlich in der Assembly, wenn Sie sie mithilfe des C#-Compilers erstellen. Geben Sie private als Modifizierer der Barrierefreiheit an. Es ist kein anderer Modifizierer zulässig. Wenn filename es sich um eine .NET Ressourcendatei handelt, die z. B. durch Resgen.exe oder in der Entwicklungsumgebung erstellt wird, können Sie mithilfe von Membern im System.Resources Namespace darauf zugreifen. Weitere Informationen finden Sie unter System.Resources.ResourceManager. Verwenden Sie für alle anderen Ressourcen die GetManifestResource-Methoden in der Assembly-Klasse, um zur Laufzeit auf die Ressource zuzugreifen. Die in filename angegebene Datei kann jedes Format haben. Sie können z. B. einen systemeigenen DLL-Teil der Assembly erstellen, damit sie im globalen Assemblycache installiert und über verwalteten Code in der Assembly darauf zugegriffen werden kann. Sie können dasselbe aber auch im Assemblylinker vornehmen. Weitere Informationen finden Sie unter Al.exe (Assembly Linker-Tool) und Arbeiten mit Assemblys und dem globalen Assemblycache.