Читать «ЯЗЫК ПРОГРАММИРОВАНИЯ С# 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