Сохранение данных в файлах проекта
Область применения:
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?
Здравствуйте.
Подскажите как вытащить из решения, где много проектов, один и сохранить его в отдельной директории.
- Вопрос задан более трёх лет назад
- 1620 просмотров
Комментировать
Решения вопроса 0
Ответы на вопрос 2
пофиг на чем писать
Не совсем понятен вопрос. Сохранить отдельным решением?
Создайте новый солюшен.
Зайдите в каталог солюшена от куда надо вытащить проект.
Найдите папку с проектом, скопируйте ее в каталог нового солюшена.
Из студии правой кнопкой по новому солюшену, добавить проект -> существующий.
Из старого солюшена удаляете скопированный проект.
Ответ написан более трёх лет назад
luckygambler @luckygambler Автор вопроса
Скопировать я и сам бы смог!
нет, немного не то!
Не все так просто. Там куча зависимостей, общие lib, dll, которые и являются одними из проектов этого решения.
Может этот проект можно как то экспортировать средствами visual studio. я скорее это имел ввиду
luckygambler, в vs такого нет, может сторонние какие есть инструменты. Но думаю, что зависимости придется руками переносить.

Роман @yarosroman
C# the best
Копируется папка с проектом и все, открываете файл проекта и готово, зависимости прописываются в файле проекта, однако если он зависит от других проектов в решении или конкретных Dll, то придется добавлять библиотеки, если зависимости от Nuget пакетов, то студия сама из скачает при построении проекта. а потом можно сохранить файл решения куда хотите.
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Ваш ответ на вопрос
Войдите, чтобы написать ответ

- C++
- +1 ещё
Сmake не подключаеться библиотека curses,что делать?
- 1 подписчик
- 3 часа назад
- 34 просмотра
Как сохранить проект visual studio



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

Public user contributions licensed under cc-wiki license with attribution required
2.4. Сохранение проекта на диске и его загрузка для продолжения программирования
Автор не сомневается в том, что создание приложений с помощью Visual Basic увлечет вас и возникнет необходимость в сохранении проекта на диске, а также его последующей загрузке для продолжения работы. Сделать это очень просто, аналогично сохранению документа Microsoft Office.
Просто щелкните мышью на кнопке Save Project (Сохранить проект) панели инструментов (Tool Bar), либо выберите команду меню File – Save Project (Файл – Сохранить проект) для сохранения всех компонентов проекта на диск. После этого Visual Basic последовательно выдаст запрос о сохранении отдельных компонентов. Сначала появится диалог Save File As (Сохранить файл как) с запросом о сохранении формы (Рис.2.27).

Рис.2.27. Диалог Save File As (Сохранить файл как)
Вы можете откорректировать предлагаемое имя формы в поле ввода File Name (Имя файла) или оставить его без изменений. Затем нажмите кнопку Сохранить (Save). После сохранения формы, появится диалог Save Project As (Сохранить проект как) с запросом о сохранении проекта (Рис.2.28).

Рис.2.28. Диалог Save Project As (Сохранить проект как)
Сразу нажмите кнопку Save (Сохранить) или предварительно измените имя файла проекта в поле ввода File Name (Имя файла).
На этом сохранение проекта будет завершено. При повторном сохранении не придется проделывать все действия заново – достаточно нажать кнопку Save Project (Сохранить проект) панели инструментов.
Существует еще одна более гибкая возможность сохранения отдельных компонентов проекта, что бывает необходимым, например, если изменения других компонентов сохранять не нужно.
В проводнике проекта (Project Explorer) разверните ветку Forms (Формы) щелчком мыши на значке. Здесь мы увидим имя формы ПриветМир (Рис.2.29).

Рис.2.29. Обзор компонентов проекта HelloWorld
в проводнике проекта (Project Explorer)
Щелкните правой кнопкой мыши на имени формы. Появится контекстное меню, с помощью которого можно выполнить все допустимые действия над данным объектом (Рис.2.30).

Рис.2.30. Контекстное меню
в проводнике проекта (Project Explorer)
Выберите пункт меню Save ПриветМир.frm (Сохранить ПриветМир.frm) для сохранения формы на диске.

Для настройки режима автоматического сохранения проекта воспользуйтесь пунктом меню Tools – Options (Инструменты – Параметры). Откроется диалог Options (Параметры). Щелчком мыши перейдите на вкладку Environment (Среда) (Рис.2.31).

Рис.2.31. Вкладка Environment (Среда)
диалога Options (Параметры)
Переключатель When a program starts (Когда программа запускается) установите в положение Save Changes (Сохранять изменения) и нажмите кнопку OK.
Вот и все, что касается сохранения проекта. Теперь попробуем загрузить сохраненный проект с диска.
Для того, чтобы открыть проект, выберите команду меню File – Open Project… (Файл – Открыть проект…). На экране появится диалог Open Project (Открыть проект), раскрытый на вкладке Existing (Существующий) (Рис.2.32).

Рис.2.32. Вкладка Existing (Существующий)
диалога Open Project (Открыть проект)
Сначала в открывающемся списке Folder (Папка) выберите диск и каталог, где находится проект, затем щелкните на имени файла и нажмите кнопку Open (Открыть).
Если вы уже раньше работали с сохраненным проектом, то его удобнее открыть немного по-другому. Щелчком мыши на ярлыке перейдите к вкладке Recent (Недавний) диалога Open Project (Открыть проект) (Рис.2.33).

Рис.2.33. Вкладка Recent (Недавний)
диалога Open Project (Открыть проект)
На этой вкладке не нужно выбирать папку, просто щелкните на имени проекта и нажмите кнопку Open (Открыть).
Тем или иным способом мы открыли нужный проект, но сам по себе Visual Basic не будет выводить формы на экран для редактирования, для этого их нужно отобразить сознательно.
Для вывода на экран дважды щелкните мышью на имени формы ПриветМир в окне проводника проекта (Project Explorer) (Рис.2.29), либо сначала щелкните на нем правой кнопкой мыши, а затем из появившегося контекстного меню (Рис.2.30) выберите пункт View Object (Просмотреть объект).
Данный текст является ознакомительным фрагментом.