Читать «ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание» онлайн - страница 511

Эндрю Троелсен

Рис. 20.23. XML-представление *.resx

Создание файла *.resources

Имея файл *.resx, вы можете использовать утилиту resgen.exe, чтобы сгенерировать двоичный эквивалент этого файла. Для этого откройте окно командной строки Visual Studio 2005, перейдите в корневой каталог вашего диска C и выполните следующую команду.

resgen resxform.resx resxform.resources

Теперь вы можете открыть новый файл *.resources с помощью Visual Studio 2005, чтобы увидеть данные в двоичном формате (рис. 20.24).

Рис. 20.24. Двоичное представление *.resources

Добавление файла *.resources в компоновочный блок .NET

Теперь можно встроить файл *.resources в компоновочный блок.NET, используя опцию /resources компилятора командной строки C#. Для примера скопируйте соответствующие файлы Program.cs, Form1.cs и Form1.Designer.cs в корневой каталог вашего диска C, откройте окно командной строки Visual Studio 2005 и выполните следующую команду.

csc /resource:resxform.resources /r:System.Drawing.dll *.cs

Если открыть созданный в результате этого компоновочный блок с помощью ildasm.exe, вы увидите, что манифест соответствующим образом обновлен, как показано на рис. 20.25.

Рис. 20.25. Встроенные ресурсы

Работа с ResourceWriter

В предыдущем примере мы использовали тип ResXResourceWriter, чтобы сгенерировать XML-файл, содержащий пары имен и значений для каждого ресурса приложения. Полученный в результате файл *.resx был затем обработан утилитой resgen.exe. Наконец, с помощью флага /resource компилятора C# файл *. resources был встроен в компоновочный блок. Но дело в том. что создавать файл *.resx совсем не обязательно (хотя наличие XML-представления ресурсов может оказаться полезным, поскольку оно вполне пригодно для анализа). Если вам не нужен файл *.resx, вы можете использовать тип ResourceWriter, с помощью которого двоичный файл *.resources можно создать непосредственно.

private void GenerateResourceFile() {

 // Создание нового файла *.resources.

 ResourceWriter rw;

 rw = new ResourceWriter(@"C:\myResources.resources");

 // Добавление одного изображения и одной строки.

 rw.AddResource("happyDude", new Bitmap("happyDude.bmp"));

 rw.AddResource("welcomeString", "Приветствие формата ресурсов.");

 rw.Generate();

 rw.Close();

}

Полученный файл *.resources можно добавить в компоновочный блок, используя опцию /resources компилятора.

csc /resource:myresources.resources *.cs

Исходный код. Проект ResXWriter размещен в подкаталоге, соответствующем главе 20.

Генерирование ресурсов в Visual Studio 2005

С файлами *.resx и *.resources можно, конечно, работать вручную в командной строке, но Visual Studio 2005 предлагает средства автоматизации создания и встраивания ресурсов в проект. Для примера создайте новое приложение Windows Forms, назвав его MyResourcesWinApp. Открыв для созданного проекта окно Solution Explorer, вы увидите, что теперь с каждой формой в вашем приложении автоматически связывается файл *.resx (рис. 20.26).

Рис. 20.26. Автоматическое генерирование файлов *.resx в Visual Studio 2005