Поделиться через


Параметры компилятора C#, указывающие ресурсы

Следующие параметры определяют способ создания и импорта ресурсов Win32 компилятором C#. Новый синтаксис 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 можно создать с помощью компилятора ресурсов. Компилятор ресурсов вызывается при компиляции программы Visual C++. При этом файл с расширением .ico создается из файла .rc.

Win32Manifest

Параметр Win32Manifest позволяет указать пользовательский файл манифеста приложения win32manifest для внедрения в переносимый исполняемый файл проекта (PE-файл).

<Win32Manifest>filename</Win32Manifest>

filename — это имя и расположение пользовательского файла манифеста. По умолчанию компилятор C# внедряет манифест приложения, определяющий запрошенный уровень выполнения asInvoker. Он создает манифест в той же папке, в которой создается исполняемый файл. Если необходимо предоставить пользовательский манифест, например, чтобы задать уровень выполнения highestAvailable or requireAdministrator, используйте этот параметр, чтобы указать имя файла.

Примечание.

Этот параметр и параметр Win32Resources являются взаимоисключающими. При попытке использовать оба параметра в одной командной строке возникнет ошибка построения.

Для приложения без манифеста, определяющего запрошенный уровень выполнения, требуется виртуализация файлов и реестра с помощью функции контроля учетных записей в Windows. Дополнительные сведения см. в разделе Контроль учетных записей.

Приложение требует виртуализации в любом из следующих случаев:

  • Вы можете использовать параметр NoWin32Manifest и не предоставлять манифест на более позднем этапе сборки или в файле ресурсов Windows (.res) с помощью параметра Win32Resource.
  • Вы можете предоставлять пользовательский манифест, который не определяет запрошенный уровень выполнения.

Visual Studio создает файл по умолчанию с расширением .manifest и сохраняет его в каталогах отладки и выпуска вместе с исполняемым файлом. Пользовательский манифест можно добавить, создав его в любом текстовом редакторе и добавив полученный файл в проект. Вы также можете щелкнуть значок проекта в Обозревателе решений и нажать кнопку Добавить новый элемент, а затем Файл манифеста приложения. Добавленный новый или существующий файл манифеста появится в раскрывающемся списке Манифест. Дополнительные сведения см. в разделе Страница "Приложение" в конструкторе проектов (C#).

Манифест приложения можно предоставить во время пользовательского этапа после сборки или в составе файла ресурсов Win32 с помощью параметра NoWin32Manifest. Этот же параметр можно использовать, если вы хотите, чтобы ваше приложение требовало виртуализации файлов или реестров в Windows Vista.

NoWin32Manifest

С помощью параметра NoWin32Manifest можно указать компилятору не внедрять манифест приложения в исполняемый файл.

<NoWin32Manifest />

При использовании этого параметра приложение будет подлежать виртуализации в Windows Vista, если манифест приложения не будет предоставлен в файле ресурсов Win32 или на более поздних этапах сборки.

В Visual Studio этот параметр можно задать на странице Свойство приложения, выбрав в раскрывающемся списке Манифест пункт Создать приложение без манифеста. Дополнительные сведения см. в разделе Страница "Приложение" в конструкторе проектов (C#).

Ресурсы

Внедряет указанный ресурс в выходной файл.

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

filename — это файл ресурсов .NET, который требуется внедрить в выходной файл. identifier (необязательно) — это логическое имя ресурса, используемое для его загрузки. По умолчанию используется имя файла. accessibility-modifier (необязательно) — это доступность ресурса: public (открытый) или private (закрытый). Значение по умолчанию: public. По умолчанию ресурсы в сборке открыты, если они создавались с помощью компилятора C#. Чтобы сделать ресурс закрытым, укажите параметр private в качестве модификатора доступа. Уровни доступности, отличные от public или private, не допускаются. Если filename является файлом ресурсов .NET, созданным, например, с помощью Resgen.exe или в среде разработки, то к нему можно обращаться с помощью элементов в пространстве имен System.Resources. Дополнительные сведения см. в разделе System.Resources.ResourceManager. Чтобы получить доступ ко всем остальным ресурсам во время выполнения, используйте методы GetManifestResource в классе Assembly. Порядок расположения ресурсов в выходном файле будет определяться порядком, указанным в файле проекта.

LinkResources

Создает в выходном файле ссылку на ресурс .NET. Файл ресурсов не добавляется в выходной файл. Параметр LinkResources отличается от параметра Resource, который внедряет файл ресурсов в выходной файл.

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

filename — это файл ресурсов .NET, ссылку на который необходимо создать из сборки. identifier (необязательно) — это логическое имя ресурса, используемое для его загрузки. По умолчанию используется имя файла. accessibility-modifier (необязательно) — это доступность ресурса: public (открытый) или private (закрытый). Значение по умолчанию: public. По умолчанию связанные ресурсы в сборке открыты, если они создавались с помощью компилятора C#. Чтобы сделать ресурс закрытым, укажите параметр private в качестве модификатора доступа. Модификаторы, отличные от public или private, не допускаются. Если filename является файлом ресурсов .NET, созданным, например, с помощью Resgen.exe или в среде разработки, то к нему можно обращаться с помощью элементов в пространстве имен System.Resources. Дополнительные сведения см. в разделе System.Resources.ResourceManager. Чтобы получить доступ ко всем остальным ресурсам во время выполнения, используйте методы GetManifestResource в классе Assembly. Файл, указанный в параметре filename, может иметь любой формат. Например, может потребоваться сделать имеющуюся на компьютере библиотеку DLL частью сборки, поэтому ее можно разместить в глобальном кэше сборок и обеспечить к ней доступ из управляемого кода сборки. Это действие можно также выполнить в компоновщике сборок. Дополнительные сведения см. в разделах Al.exe (компоновщик сборок) и Работа со сборками и глобальным кэшем сборок.