Сохранение данных в файлах проекта
Подтип проекта может сохранять и извлекать данные, относящиеся к подтипу, в файле проекта. Платформа управляемых пакетов (MPF) предоставляет два интерфейса для выполнения этой задачи:
- Интерфейс IVsBuildPropertyStorage позволяет получить доступ к значениям свойств из раздела MSBuild файла проекта. Методы, предоставляемые IVsBuildPropertyStorage любым пользователем, могут вызываться любым пользователем, когда пользователю нужно загружать или сохранять связанные данные сборки.
- Используется IPersistXMLFragment для сохранения данных, связанных с сборкой, в ФОРМАТЕ XML свободной формы. Методы, предоставляемые IPersistXMLFragment Visual Studio, вызываются всякий раз, когда Visual Studio должен сохранять данные, не связанные с сборкой, в файле проекта. Дополнительные сведения о сохранении сборок и не связанных с сборкой данных см. в разделе «Сохранение данных» в файле проекта MSBuild.
Сохранение и извлечение связанных данных сборки
Сохранение связанных данных сборки в файле проекта
- SetPropertyValue Вызовите метод, чтобы сохранить полный путь к файлу проекта.
private SpecializedProject project; IVsBuildPropertyStorage projectStorage = (IVsBuildPropertyStorage)project; string newFullPath = GetNewFullPath(); // Set a full path of the project file. ErrorHandler.ThrowOnFailure(projectStorage.SetPropertyValue( "MSBuildProjectDirectory", String.Empty, (uint)_PersistStorageType.PST_PROJECT_FILE, newFullPath));
Получение связанных данных сборки из файла проекта
- GetPropertyValue Вызовите метод, чтобы получить полный путь к файлу проекта.
private SpecializedProject project; IVsBuildPropertyStorage projectStorage = (IVsBuildPropertyStorage)project; string fullPath; // Get a full path of the project file. ErrorHandler.ThrowOnFailure(projectStorage.GetPropertyValue( "MSBuildProjectDirectory", String.Empty, (uint)_PersistStorageType.PST_PROJECT_FILE, out fullPath));
Сохранение и извлечение связанных с сборкой данных
Сохранение данных, связанных с сборкой, в файле проекта
- IsFragmentDirty Реализуйте метод, чтобы определить, изменился ли фрагмент XML после последнего сохранения в текущем файле.
public int IsFragmentDirty(uint storage, out int pfDirty) < pfDirty = 0; switch (storage) < case (uint)_PersistStorageType.PST_PROJECT_FILE: < if (isDirty) pfDirty |= 1; break; >case (uint)_PersistStorageType.PST_USER_FILE: < // We do not store anything in the user file. break; >> // Forward the call to inner flavor(s) if (pfDirty == 0 && innerCfg != null && this.innerCfg is IPersistXMLFragment) return ((IPersistXMLFragment)this.innerCfg).IsFragmentDirty(storage, out pfDirty); return VSConstants.S_OK; >
public int Save(ref Guid guidFlavor, uint storage, out string pbstrXMLFragment, int fClearDirty) < pbstrXMLFragment = null; if (IsMyFlavorGuid(ref guidFlavor)) < switch (storage) < case (uint)_PersistStorageType.PST_PROJECT_FILE: < // Create XML for our data. XmlDocument doc = new XmlDocument(); XmlNode root = doc.CreateElement(this.GetType().Name); XmlNode node = doc.CreateElement(targetsTag); node.AppendChild(doc.CreateTextNode(this.TargetsToExecute)); root.AppendChild(node); node = doc.CreateElement(updateTargetsTag); node.AppendChild(doc.CreateTextNode(this.UpdateTargetList.ToString())); root.AppendChild(node); doc.AppendChild(root); // Get XML fragment representing our data pbstrXMLFragment = doc.InnerXml; if (fClearDirty != 0) isDirty = false; break; >case (uint)_PersistStorageType.PST_USER_FILE: < // We do not store anything in the user file. break; >> > // Forward the call to inner flavor(s) if (this.innerCfg != null && this.innerCfg is IPersistXMLFragment) return ((IPersistXMLFragment)this.innerCfg).Save(ref guidFlavor, storage, out pbstrXMLFragment, fClearDirty); return VSConstants.S_OK; >
Получение данных, связанных с сборкой, в файле проекта
- InitNew Реализуйте метод для инициализации свойств расширения проекта и других независимых от сборки данных. Этот метод вызывается, если в файле проекта отсутствуют данные конфигурации XML.
public int InitNew(ref Guid guidFlavor, uint storage) < //Return,if it is our guid. if (IsMyFlavorGuid(ref guidFlavor)) return VSConstants.S_OK; //Forward the call to inner flavor(s). if (this.innerCfg != null && this.innerCfg is IPersistXMLFragment) return ((IPersistXMLFragment)this.innerCfg).InitNew(ref guidFlavor, storage); return VSConstants.S_OK;
public int Load(ref Guid guidFlavor, uint storage, string pszXMLFragment) < if (IsMyFlavorGuid(ref guidFlavor)) < switch (storage) < case (uint)_PersistStorageType.PST_PROJECT_FILE: < // Load our data from the XML fragment. XmlDocument doc = new XmlDocument(); XmlNode node = doc.CreateElement(this.GetType().Name); node.InnerXml = pszXMLFragment; if (node == null || node.FirstChild == null || node.FirstChild.ChildNodes.Count == 0 || node.FirstChild.ChildNodes[0].Name != targetsTag) break; this.TargetsToExecute = node.FirstChild.ChildNodes[0].InnerText; if (node.FirstChild.ChildNodes.Count case (uint)_PersistStorageType.PST_USER_FILE: < // We do not store anything in the user file. break; >> > // Forward the call to inner flavor(s) if (this.innerCfg != null && this.innerCfg is IPersistXMLFragment) return ((IPersistXMLFragment)this.innerCfg).Load(ref guidFlavor, storage, pszXMLFragment); return VSConstants.S_OK; >
Все примеры кода, приведенные в этом разделе, являются частями более крупного примера в примерах VSSDK.
Связанный контент
Обмен картами кода
Вы можете сохранить карты кода в рамках проекта Visual Studio в виде изображения или в виде файла XPS.
Совместное использование карты кода с другими пользователями Visual Studio
Для сохранения карты используйте меню Файл .
Чтобы сохранить карту в рамках определенного проекта, на панели инструментов карты выберите "Поделиться>перемещением " и выберите проект, в который нужно сохранить карту.

Visual Studio сохраняет карту в виде DGML-файла , который можно поделиться с другими пользователями Visual Studio Enterprise и Visual Studio Professional.
Перед тем как предоставить общий доступ к карте пользователям Visual Studio Professional, разверните все группы, отобразите скрытые узлы и связи между группами и извлеките все удаленные узлы, которые нужно показать другим пользователям. В противном случае другие пользователи не увидят эти элементы.
При сохранении карты, находящейся в проекте моделирования или скопированной из такого проекта в другое место, может возникнуть следующая ошибка:
«Невозможно сохранить имяФайла вне каталога проекта. Связанные элементы не поддерживаются.»
Visual Studio выводит ошибку, но в любом случае создает сохраненную версию. Чтобы избежать этой ошибки, создавайте карту вне проекта моделирования. Затем ее можно сохранить в нужном месте. Простое копирование файла в другое место в решении и последующая попытка сохранения не помогают.
Экспорт карты кода в виде изображения
При экспорте карты кода в виде изображения его можно скопировать в другие приложения, такие как Microsoft Word или PowerPoint.
- На панели инструментов карты кода выберите "Поделиться> электронной почтой как изображение" или "Копировать изображение".
- Вставьте изображение в другое приложение.
Экспорт карты в формате XPS-файла
При экспорте карты кода в виде ФАЙЛА XPS его можно увидеть в xml-файлах или средствах просмотра XAML, таких как Интернет Обозреватель.
- На панели инструментов карты кода выберите "Поделиться>электронной почтой как переносимой XPS" или "Сохранить как переносимую XPS".
- Выберите место для сохранения файла.
- Укажите имя для карты кода. Убедитесь, что поле "Сохранить как тип " имеет значение XPS-файлы (*.xps). Нажмите кнопку Сохранить.
Связанный контент
Как правильно сохранить проект

Тупой вопрос: как сохранить проект и скомпилированный проект?
Я нажимаю на 'File/Save All' и сохранение происходит автоматически, как изменить путь сохранения.

Как целиком сохранить проект в бэкап
Всем привет. Использую студию 2010. Появилась необходимость сделать полную копию всего проекта со.
Как правильно открыть c# проект в expression blend 4
Как правильно открыть c# проект в expression blend 4 что бы можно было его оформить(закрасить.
windows 7 + win32. Как правильно сохранить проект?
Как правильно сохранить проект? консольный, win32. Чтобы запускался на семерке. Не в компиляторе, а.
404 / 337 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
Извините, но экстрасенсы уволились из-за сильной рабочей нагрузки. Какой проект? Где сохранить? В чем сохранять? Для чего сохранить? На чем открывать будете?
Не за что!
Добавлено через 1 минуту
Если в студии, то левой клавишей мыши Файл/Сохранить как. . Выбираем место для сохранения и сохраняем.
Добавлено через 45 секунд
Без обид, но как бы Вы сами ответили на свой вопрос?
102 / 100 / 33
Регистрация: 24.04.2010
Сообщений: 286
Записей в блоге: 1
Главное чтоби версии vstudio на вашем и чужом компе били совместими.
В другом случае можут возникнуть некоторие проблеми, которие все равно можна решить
Регистрация: 07.05.2013
Сообщений: 25
Save all там должны быть все 6 файлов включая exe. Если ни с чем не путаю. Просто я в основном на делфи работаю =)
Регистрация: 21.05.2013
Сообщений: 9
Нажимать "Сохранить все", ну и естественно не забывать все дополнительные файлы(картинки и прочее), если они имеются, кидать в папку с проектом для того чтоб все на другом компе хорошо открывалось
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Как правильно сохранить проект в Visual studio 2005?
сохраняя программу нажимаю save as и сохраняю в папку,а затем когда открываю програма запускается.
Как сохранить проект
Ребята! Подскажите ради бога! Никак не пойму. Как же всё-таки правильно сохранять проект.
Как сохранить проект в exe-файле?
Существует готовый проект Windows Forms на C#. Как сохранить/или скомпилировать в один единый.
Как сохранить проект без расширения
Доброго дня форумчани. Создал проект в билдере. Сохранил под названием "Школа.exe". Понятно если.
Или воспользуйтесь поиском по форуму:
Сохранение проекта
Сохраняемость — это ключевое руководство по проектированию проекта. Большинство проектов используют элементы проекта, представляющие файлы; Visual Studio также поддерживает проекты, данные которых не основаны на файлах. Файлы, принадлежащие проекту и файлу проекта, должны быть сохранены. Интегрированная среда разработки указывает проекту сохранить себя или элемент проекта.
Шаблоны для проектов передаются в фабрику проектов. Шаблоны должны поддерживать инициализацию всех элементов проекта в соответствии с требованиями конкретного типа проекта. Эти шаблоны позже можно сохранить в виде файлов проекта и управлять с помощью интегрированной среды разработки с помощью решения. Дополнительные сведения см. в статье "Создание экземпляров проекта с помощью фабрик и решений проекта".
Элементы проекта могут быть файловыми или нефайловыми:
- Элементы на основе файлов могут быть локальными или удаленными. Например, в веб-проектах C#подключения к файлам в удаленной системе сохраняются локально, а сами файлы сохраняются в удаленной системе.
- Элементы, не основанные на файлах, могут сохранять элементы в базе данных или репозитории.
Фиксация моделей
После определения расположения элементов проекта необходимо выбрать соответствующую модель фиксации. Например, в файловой модели с локальными файлами каждый проект можно сохранить автономно. В модели репозитория можно сохранить несколько элементов в одной транзакции. Дополнительные сведения см. в разделе "Решения по проектированию типов проектов".
Чтобы определить расширения имен файлов, проекты реализуют IPersistFileFormat интерфейс, который предоставляет сведения, позволяющие клиенту объекта реализовать диалоговое окно "Сохранить как", то есть заполнить раскрывающийся список "Сохранить как тип" и управлять начальным расширением имени файла.
Интегрированная среда разработки вызывает IPersistFileFormat интерфейс в проекте, чтобы указать, что проект должен сохранять элементы проекта соответствующим образом. Поэтому объект владеет всеми аспектами файла и формата. Сюда входит имя формата объекта.
В случае, если элементы не являются файлами, IPersistFileFormat по-прежнему сохраняется нефайловая версия. Файлы проекта, такие как VBP-файлы для проектов Visual Basic или vcproj-файлов для проектов Visual C++, также должны сохраняться.
Для действий сохранения интегрированная среда разработки проверяет запущенную таблицу документов (RDT), а иерархия передает команды IVsPersistHierarchyItem в интерфейсы и IVsPersistHierarchyItem2 интерфейсы. Метод IsItemDirty реализуется для определения того, был ли изменен элемент. Если элемент имеется, SaveItem метод реализуется для сохранения измененного элемента.
Методы интерфейса IVsPersistHierarchyItem2 используются для определения того, может ли элемент быть перезагрузлен и, если элемент может быть, чтобы перезагрузить его. Кроме того, метод можно реализовать, IgnoreItemFileChanges чтобы изменить элементы карта без сохранения.
См. также
- Контрольный список. Создание типов проектов
- Создание экземпляров проекта с помощью фабрик проектов