Как сохранить проект visual studio


Скачай курс
в приложении
Перейти в приложение
Открыть мобильную версию сайта
© 2013 — 2023. Stepik
Наши условия использования и конфиденциальности

Public user contributions licensed under cc-wiki license with attribution required
Сохранение данных в файлах проекта
Область применения:
Visual Studio Visual Studio для Mac
Visual Studio Code ![]()
Подтип проекта может сохранять и извлекать данные, относящиеся к подтипу, в файле проекта. Платформа управляемых пакетов (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 Visual Studio для Mac
Visual Studio Code ![]()
Сохраняемость — это ключевое руководство по проектированию проекта. Большинство проектов используют элементы проекта, представляющие файлы; Visual Studio также поддерживает проекты, данные которых не основаны на файлах. Файлы, принадлежащие проекту и файлу проекта, должны быть сохранены. Интегрированная среда разработки указывает проекту сохранить себя или элемент проекта.
Шаблоны для проектов передаются в фабрику проектов. Шаблоны должны поддерживать инициализацию всех элементов проекта в соответствии с требованиями конкретного типа проекта. Эти шаблоны позже можно сохранить в виде файлов проекта и управлять с помощью интегрированной среды разработки с помощью решения. Дополнительные сведения см. в статье "Создание экземпляров проекта с помощью фабрик и решений проекта".
Элементы проекта могут быть файловыми или нефайловыми:
- Элементы на основе файлов могут быть локальными или удаленными. Например, в веб-проектах C#подключения к файлам в удаленной системе сохраняются локально, а сами файлы сохраняются в удаленной системе.
- Элементы, не основанные на файлах, могут сохранять элементы в базе данных или репозитории.
Фиксация моделей
После определения расположения элементов проекта необходимо выбрать соответствующую модель фиксации. Например, в файловой модели с локальными файлами каждый проект можно сохранить автономно. В модели репозитория можно сохранить несколько элементов в одной транзакции. Дополнительные сведения см. в разделе "Решения по проектированию типов проектов".
Чтобы определить расширения имен файлов, проекты реализуют IPersistFileFormat интерфейс, который предоставляет сведения, позволяющие клиенту объекта реализовать диалоговое окно "Сохранить как", то есть заполнить раскрывающийся список "Сохранить как тип" и управлять начальным расширением имени файла.
Интегрированная среда разработки вызывает IPersistFileFormat интерфейс в проекте, чтобы указать, что проект должен сохранять элементы проекта соответствующим образом. Поэтому объект владеет всеми аспектами файла и формата. Сюда входит имя формата объекта.
В случае, если элементы не являются файлами, IPersistFileFormat по-прежнему сохраняется нефайловая версия. Файлы проекта, такие как VBP-файлы для проектов Visual Basic или vcproj-файлов для проектов Visual C++, также должны сохраняться.
Для действий сохранения интегрированная среда разработки проверяет запущенную таблицу документов (RDT), а иерархия передает команды IVsPersistHierarchyItem в интерфейсы и IVsPersistHierarchyItem2 интерфейсы. Метод IsItemDirty реализуется для определения того, был ли изменен элемент. Если элемент имеется, SaveItem метод реализуется для сохранения измененного элемента.
Методы интерфейса IVsPersistHierarchyItem2 используются для определения того, может ли элемент быть перезагрузлен и, если элемент может быть, чтобы перезагрузить его. Кроме того, метод можно реализовать, IgnoreItemFileChanges чтобы изменить элементы карта без сохранения.
См. также
- Контрольный список. Создание типов проектов
- Создание экземпляров проекта с помощью фабрик проектов
Как правильно сохранить проект
Тупой вопрос: как сохранить проект и скомпилированный проект?
Я нажимаю на 'File/Save All' и сохранение происходит автоматически, как изменить путь сохранения.

Как целиком сохранить проект в бэкап
Всем привет. Использую студию 2010. Появилась необходимость сделать полную копию всего проекта со.
Как правильно открыть c# проект в expression blend 4
Как правильно открыть c# проект в expression blend 4 что бы можно было его оформить(закрасить.
windows 7 + win32. Как правильно сохранить проект?
Как правильно сохранить проект? консольный, win32. Чтобы запускался на семерке. Не в компиляторе, а.
401 / 334 / 19
Регистрация: 26.05.2009
Сообщений: 2,696
Извините, но экстрасенсы уволились из-за сильной рабочей нагрузки. Какой проект? Где сохранить? В чем сохранять? Для чего сохранить? На чем открывать будете?
Не за что!
Добавлено через 1 минуту
Если в студии, то левой клавишей мыши Файл/Сохранить как. . Выбираем место для сохранения и сохраняем.
Добавлено через 45 секунд
Без обид, но как бы Вы сами ответили на свой вопрос?
102 / 100 / 33
Регистрация: 24.04.2010
Сообщений: 286
Записей в блоге: 1
Главное чтоби версии vstudio на вашем и чужом компе били совместими.
В другом случае можут возникнуть некоторие проблеми, которие все равно можна решить
