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.
  • Resources / -resource: Bettet die angegebene Ressource ein (Kurzform: /res).
  • LinkResources / -linkresources: Verknüpft 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 (Symbolinformationen) enthalten, anhand derer die Anwendung im Datei-Explorer identifiziert werden kann. Wenn sie diese Option nicht angeben, generiert der Compiler Versionsinformationen auf Grundlage der Assemblyversion.

Win32Icon

Die Option Win32Icon fügt der Ausgabedatei eine ICO-Datei hinzu, die der Ausgabedatei im Datei-Explorer das gewünschte Aussehen verleiht.

<Win32Icon>filename</Win32Icon>

filename ist die ICO-Datei, die Sie Ihrer Ausgabedatei hinzufügen möchten. Eine ICO-Datei kann mit dem Ressourcencompiler erstellt werden. Der Ressourcencompiler wird aufgerufen, wenn Sie ein Visual C++-Programm kompilieren. Aus der RC-Datei wird eine ICO-Datei erstellt.

Win32Manifest

Verwenden Sie die Option Win32Manifest, um eine benutzerdefinierte Win32-Anwendungsmanifestdatei anzugeben, die in die portierbare ausführbare Datei (Portable Executable, PE-Datei) eines Projekts eingebettet werden soll.

<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 als „asInvoker“ angibt. Er erstellt das Manifest in demselben Ordner, in dem die ausführbare Datei erstellt wird. Wenn Sie ein benutzerdefiniertes Manifest bereitstellen möchten, z.B. um eine angeforderte Ausführungsebene von „highestAvailable“ oder „requireAdministrator“ anzugeben, verwenden Sie diese Option zum Angeben des Dateinamens.

Hinweis

Diese Option und die Option Win32Resources schließen sich gegenseitig aus. Wenn Sie versuchen, beide Optionen in derselben Befehlszeile zu verwenden, erhalten Sie einen Buildfehler.

Eine Anwendung ohne Anwendungsmanifest, das eine angeforderte Ausführungsebene angibt, unterliegt der Datei- und Registrierungsvirtualisierung unter der Funktion „Benutzerkontensteuerung“ in Windows. Weitere Informationen finden Sie unter Benutzerkontensteuerung.

Die Anwendung unterliegt der Virtualisierung, wenn eine dieser Bedingungen erfüllt ist:

  • 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 Ihre 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 diese Option verwendet wird, unterliegt die Anwendung der Virtualisierung unter Windows Vista, es sei denn, Sie stellen ein Anwendungsmanifest in einer Win32-Ressourcendatei oder einem späteren Buildschritt 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#).

Ressourcen

Bettet die angegebene Ressource in die Ausgabedatei ein.

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

filename ist die .NET-Ressourcendatei, die in die Ausgabedatei eingebettet werden soll. identifier (optional) ist der logische Name der Ressource: der Name, mit dem die Ressource geladen wird. Der Standardwert ist der Name der Datei. accessibility-modifier (optional) ist die Barrierefreiheit der Ressource: öffentlich oder privat. Der Standardwert ist public. Ressourcen sind standardmäßig in der Assembly öffentlich, wenn sie mithilfe des C#-Compilers erstellt werden. Geben Sie private als Modifizierer der Barrierefreiheit an. Außer public und private sind keine anderen Zugriffsmethoden zulässig. Wenn es sich bei filename um eine .NET-Ressourcendatei handelt, die beispielsweise von Resgen.exe oder in der Entwicklungsumgebung erstellt wurde, ist der Zugriff mit Membern im System.Resources-Namespace möglich. 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 wird durch die in der Projektdatei angegebene Reihenfolge bestimmt.

LinkResources

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

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

filename ist die .NET-Ressourcendatei, die Sie aus der Assembly verknüpfen möchten. identifier (optional) ist der logische Name der Ressource: der Name, mit dem die Ressource geladen wird. 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 in der Assembly öffentlich, wenn sie mit den C#-Compiler erstellt werden. Geben Sie private als Modifizierer der Barrierefreiheit an. Außer public und private sind keine anderen Modifizierer zulässig. Wenn es sich bei filename um eine .NET-Ressourcendatei handelt, die beispielsweise von Resgen.exe oder in der Entwicklungsumgebung erstellt wurde, ist der Zugriff mit Membern im System.Resources-Namespace möglich. 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. eine native DLL zu einem Teil der Assembly machen, sodass sie im globalen Assemblycache installiert und aus verwaltetem 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.