Опубликован: 12.02.2013 | Доступ: свободный | Студентов: 793 / 47 | Длительность: 17:51:00
Специальности: Программист
Лекция 4:

Управление решениями в Visual Studio

Аннотация: Для создания программ для Windows Phone используется среда Visual Studio. В этой лекции вы рассмотрите процесс создания и управления проектами Windows Phone. Также вы узнаете, как запускать и отлаживать программы для Windows Phone, используя эмулятор Windows Phone. Это позволяет тестировать свои программы без необходимости иметь само устройство. Кроме этого, вы узнаете, как Visual Studio управляет файлами решений.

Презентацию к данной лекции Вы можете скачать здесь.

5.1. Проекты и решения в Visual Studio

Создание программ. При создании программы мы пишем ряд инструкций на языке программирования высокого уровня. При разработке приложений для Windows Phone большинство разработчиков используют язык C#, но все основные принципы и интерфейс для программирования приложений (APIApplication Programmer Interface) так же реализуются в языке Visual Basic .NET.

Компилятор — это программа, которая преобразует высокоуровневые инструкции, создаваемые программистом, в инструкции более низкого уровня для выполнения на компьютере. В среде Microsoft .NET компилятор выдает код на промежуточном языке (MSIL), который при запуске программы компилируется в машинный код.

Чтобы создать рабочую программу, нужен, как минимум, файл с исходным кодом программы на языке C# (текстовый файл с расширением .cs) и компилятор. Компилятор преобразует исходный файл в исполняемый файл (двоичный файл с расширением .exe), который может использовать система .NET для выполнения программы на любой платформе. Использование MSIL означает, что один и тот же исполняемый файл можно запускать на разных аппаратных платформах.

.NET SDK. Если вы хотите создавать программы для Windows, но не хотите загружать полную версию Visual Studio, вы можете загрузить компилятор .NET и необходимые библиотеки на сайте http://msdn.microsoft.com/ru-ru/netframework/aa569263.aspx.

При установке .NET Framework можно использовать компилятор, работающий из командной строки, который может преобразовать исходные файлы на C# в исполняемые, используя консольные команды, например:

csc MyProg.cs

Эта команда скомпилирует файл MyProg.cs и создаст файл с именем MyProg.exe. Компилятор командной строки также доступен после установки Visual Studio.

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

Windows Phone SDK. Вам не нужно загружать .NET SDK, если вы хотите создавать приложения Windows Phone с помощью Visual Studio. Для этого нужно только загрузить последнюю версию Windows Phone SDK с сайта http://create.msdn.com.

Windows Phone SDK установит сразу все необходимые инструменты для создания приложений для Windows Phone: интерактивную среду разработки, эмулятор Windows Phone и другие инструменты. Инструменты также можно использовать для создания настольных приложений и игр XNA для компьютеров под управлением Windows и Xbox 360. Если в вашем компьютере установлена другая версия Visual Studio 2010, после установки Windows Phone SDK в нее будут добавлены новые типы проектов и инструменты.

Visual Studio. Visual Studio предоставляет единую среду для создания, редактирования и запуска программ. Она управляет проектами и решениями, которые объединяют все файлы программы, и позволяет управлять их содержимым. Также среда предоставляет инструменты для отладки программ. Visual Studio используется для создания приложений для компьютеров так же, как и для устройств Windows Phone.

После установки Windows Phone SDK значок Microsoft Visual Studio 2010 появится в списке программ.

Среда Visual Studio содержит большое количество кнопок, меню и инструментов, с которыми можно работать. Информацию об их назначении можно получить в справочной системе.

В рамках Visual Studio рассматриваются термины проект и решение. Они используются для организации создаваемых программ и систем. Visual Studio не может запустить любой код программы, который не входит в состав проекта или решения. Для начала можно использовать один из встроенных шаблонов для разных типов проектов.

Простой проект Visual Studio

Проект является контейнером для набора программных файлов и ресурсов, которые создают файл сборки. Самый простой проект содержит единственный файл программы. Можно создать проект, выбрав в главном меню Файл -> Создать проект…. Откроется диалоговое окно Создать проект (рис. 5.1).

Диалоговое окно Создать проект

Рис. 5.1. Диалоговое окно Создать проект

В диалоговом окне Создать проект показан список всех возможных шаблонов проектов, которые поставляются с Visual Studio (на рис. 5.1 представлено окно Visual C# 2010 Express с установленным пакетом XNA Framework SDK, в другой редакции Visual Studio набор проектов может различаться). Шаблон — это заданный набор файлов, папок и ресурсов, который используется в приложениях определенного типа. Также можно создать собственные шаблоны проектов.

Если выбрать шаблон Консольное приложение, Visual Studio создаст минимальный проект, который содержит единственный файл программы с именем Program.cs. Этот файл содержит примерно такой код:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SimpleProject
{
    class Program
    {
        static void Main(string[] args)
        {
        }
    }  
}

Если запустить эту программу, Visual Studio скомпилирует класс Program и затем запустит приложение, вызвав метод Main. Так работают программы на C#. В результате сборки этой программы будет создан файл Program.exe, который является программой для компьютера под управлением Windows.

Создание программы из нескольких исходных файлов. Часто требуется создать программу из нескольких файлов с классами. Это могут быть отдельные файлы или часть библиотеки с кодом на языке C#, созданные другими программистами. В обозревателе решений Visual Studio можно добавить к проекту новый класс, например, Library.cs.

Созданный файл Library.cs теперь является частью проекта, и при построении проекта Visual Studio скомпилирует этот файл вместе с файлом Program.cs. Однако, в результате будет создан единственный исполняемый файл с именем Program.exe. Поэтому только в одном из этих файлов может быть метод Main, иначе компилятор не сможет определить, какой из этих классов должен начать работу. Класс Library изначально будет пустым:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SimpleProject
{
    class Library
    {
    }
}

Можно создать экземпляры этого класса в методе Main:

namespace SimpleProject
{
    class Program
    {
        static void Main(string[] args)
        {
            Library l = new Library ();
        }
    }
}

Пространства имен и проекты. Классы Library и Program находятся в пространстве имен SimpleProject. Часто бывает удобно помещать различные части системы в отдельные пространства имен. Это особенно важно, если программы создают разные люди. Если программист, который пишет код библиотеки, решает, что имя Save подходит для создаваемого им метода, другой программист, который работает над другим модулем той же самой программы, также может использовать имя Save и для своего метода.

Пространства имен является логическим способом группирования элементов. У них нет никакой привязки к физическому расположению кода. Можно поместить класс библиотеки в отдельное пространство имен просто, просто изменив его имя:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SimpleLibrary
{
    class Library
    {
    }
}

Класс Library теперь находится в пространстве имен SimpleLibrary. Но попытка собрать проект приведет к возникновению ошибок (рис. 5.2).

Окно с информацией об ошибках компиляции программы

увеличить изображение
Рис. 5.2. Окно с информацией об ошибках компиляции программы

Метод Main класса Program пытается создать экземпляр класса Library. Этот класс больше не находится в пространстве имен SimpleProject, и таким образом, возникают ошибки. К счастью, поле Описание списка ошибок подсказывает, что возможно пропущена директива using. Можно решить проблему, добавив директиву using, чтобы указать компилятору на необходимость просмотра пространства имен SimpleLibrary, если нужно найти класс:

using SimpleLibrary;

namespace SimpleProject
{
    class Program
    {
        static void Main(string[] args)
        {
            Library l = new Library();
        }  
    }
}

Другой способ решения проблемы — использовать полностью определенные имена для получения доступа к ресурсам библиотеки:

SimpleLibrary.Library l = new SimpleLibrary.Library();

Необходимо помнить о том, что мы просто создаем имена элементов в проекте, но не определяем, где они сохраняются. При построении проекта Visual Studio будет просматривать все исходные файлы проекта для поиска необходимых элементов.

Добавление ресурсов в проект

Если программа должна использовать ресурсы (например, изображение для заставки программы), их также нужно добавить в проект. Можно добавить растровое изображение таким же образом, как и новый класс. После добавления изображения оно появится в обозревателе решений (рис. 5.3).

Список файлов проекта в обозревателе решений

Рис. 5.3. Список файлов проекта в обозревателе решений

Теперь решение содержит файл растрового изображения с именем Bitmap1.bmp. Можно выбрать способ управления этим содержимым в Visual Studio, изменив свойства этого объекта.

Свойства ресурсов. Как и у всех объектов, которыми управляет Visual Studio, у ресурсов проекта тоже есть свойства. Можно работать с свойствами ресурсов так же, как и со свойствами других объектов, — используя область свойств (рис. 5.4).

Свойства файла изображения

Рис. 5.4. Свойства файла изображения

Представленные на рисунке настройки указывают Visual Studio при построении проекта скопировать изображение в тот же каталог, в котором создается файл с программой. В этом случае программа сможет открыть этот файл и использовать его при выполнении программы:

Bitmap b = new Bitmap("Bitmap1.bmp");

Этот код загрузит растровое изображение в переменную b класса Bitmap. Таким образом, можно легко добавлять в проект ресурсы.

Внедрение ресурсов в приложение. В предыдущем примере настройки указывают, чтобы рисунок был сохранен в том же каталоге, что и программа. Этот подход предполагает, что при установке программы файлы с изображениями будут скопированы в папку с исполняемым файлом программы.

Вместо этого можно встроить этот ресурс прямо в файл программы при ее построении. Когда программа будет создана, ее исполняемый файл будет содержать изображение. Это можно сделать, изменив свойства ресурса (рис. 5.5).

Свойства изображения, внедряемого в исполняемый файл

Рис. 5.5. Свойства изображения, внедряемого в исполняемый файл

Свойству Действие при построении файла Bitmap2.bmp присвоено значение Внедренный ресурс. Теперь изображение сохраняется внутри файла программы. Использовать этот ресурс немного сложнее, но будет гарантировано работать независимо от того, где программа установлена, поскольку при этом не используются дополнительные файлы:

Assembly assembly;
Stream imageStream;
  
assembly = Assembly.GetExecutingAssembly();
imageStream = assembly.GetManifestResourceStream("SimpleProject.Bitmap2.bmp");

Bitmap b = new Bitmap(imageStream);

Этот код загрузит изображение из встроенного ресурса и сохранит его в переменной b. Обратите внимание, что при получении ресурса из сборки кроме имени ресурса нужно также указать ее пространство имен.

Файлы сборки и исполняемые файлы

При сборке проекта Visual Studio создает не просто программу — выходной объект является сборкой. Сборка является контейнером, в котором могут размещаться различные объекты, включая код программы. При запуске программы среда .NET открывает сборку и ищет класс, содержащий Main, который среда запускает. Файл проекта сообщает Visual Studio, что нужно поместить в сборку.

Сборки библиотек. Существуют два вида сборок — исполняемые файлы и библиотеки. При создании нового проекта можно выбрать шаблон для создания библиотеки. В этом случае будет создан новый проект, который будет содержать только классы библиотеки, т.е. никакой класс в сборке не будет содержать метод Main. Сборка библиотеки компилируется в файл с расширением .dll, что расшифровывается как динамически подключаемая библиотека. Классы библиотеки загружаются в памяти динамически во время работы программы.

Когда программа ссылается на метод класса библиотеке, этот класс будет загружен в память, и JIT-компилятор преобразует метод в машинный код, который сможет выполняться. Если класс вообще не используется, он не загружается в память. Использование динамических библиотек позволяет сохранить память за счет небольшой дополнительной работы при выполнении программы.

Динамические библиотеки можно использовать в других программах без необходимости использования исходного кода этих библиотек.

Системные библиотеки и ссылки. Программа, работающая в среде .NET, во время работы использует системные ресурсы. Если программе нужно отправить сообщение на консоль, она может вызвать для этого метод системы:

System.Console.WriteLine("Hello World");

Эти методы хранятся в системных библиотеках, которые являются DLL-файлами, созданными Microsoft и распространяемыми как часть системы .NET. Файл сборки содержит ссылки на файлы библиотеки, с которыми он работает. Список ссылок можно увидеть в Visual Studio в области обозревателя решений (рис. 5.6).

Список ссылок проекта в обозревателе решений

Рис. 5.6. Список ссылок проекта в обозревателе решений

Раздел Ссылки проекта содержит список всех ресурсов, которые использует приложение. При создании проекта определенного типа Visual Studio добавляет ссылки на ресурсы, которые требуются для построения проекта. Этим списком можно управлять самостоятельно. Например, для использования акселерометра в приложении для Windows Phone необходимо добавить ссылку на пространство имен Microsoft.Devices.Sensors.

Отметим, что при добавлении ссылки на ресурс он не обязательно станет частью проекта — сборка должна иметь возможность использовать этот ресурсу при работе. Если ресурс не будет доступен во время выполнения, то произойдет аварийное завершение работы программы. Ресурсы имеют номер версии. Если в систему будет добавлена новая версия библиотеки, любые более старые программы смогут использовать предыдущую версию.

Построение программы. При построении программы Visual Studio собирает все необходимые для построения сборки ресурсы и использует их для создания файла. Полученная сборка сохраняется в виде исполняемого файла в папке, путь к которой задается в настройках приложения. Этот файл также может работать и на другом компьютере с установленной средой .NET. При построении отладочной версии Visual Studio также создает базу данных с отладочной информацией, которая предоставляет информацию об исходном коде.