Как включить лист свойств в шаблон проекта VC

У меня много проектов VC в решении Visual Studio 2013. Для каждого проекта я сохраняю большинство его свойств в окне свойств AllConfigurations.props, принадлежащий папке проекта. Я пытаюсь создать шаблон проекта для такого проекта. я добавить AllConfigurations.props для шаблона zip-файла и ссылки на него в.vstemplate:

  <Project TargetFileName="Test.vcxproj" File="Test.vcxproj" ReplaceParameters="true">
  <ProjectItem ReplaceParameters="false" TargetFileName="AllConfigurations.props">AllConfigurations.props</ProjectItem>

Но при создании нового проекта с этим шаблоном Visual Studio отображает ошибку:

Невозможно прочитать файл проекта "Test1.vcxproj". Test1\Test1.vcxproj(76,5): импортированный проект "Test1\AllConfigurations.props" не найден. Убедитесь, что путь в объявлении правильный, и что файл существует на диске.

Проект не добавляется в решение. Кажется, что VS пытается загрузить новый проект, прежде чем распаковать все файлы из шаблона.

Как мне справиться с этим?

2 ответа

Вот как вы можете создать шаблон проекта Visual Studio C++, который включает ваши пользовательские таблицы свойств.

  1. Создайте проект, который вы хотите экспортировать в шаблон, и добавьте страницу свойств в окне диспетчера свойств. В вашем случае это файл AllConfigurations.props.
  2. В окне обозревателя решений добавьте файл листа свойств в проект. Вы должны сделать это, чтобы получить файл в архив шаблона и автоматически скопировать его в новый проект.
  3. Экспортируйте шаблон проекта, используя File-> Export Template. На второй странице мастера снимите флажок Автоматически импортировать шаблон в Visual Studio.
  4. Извлеките файл .vcxproj из zip-файла шаблона и откройте в текстовом редакторе. Найдите строки, которые содержат ваш файл листа свойств. Будет один для каждой конфигурации сборки в вашем проекте. В вашем случае они должны выглядеть так: <Import Project="AllConfigurations.props" />, Измените строки на это: <Import Project="AllConfigurations.props" Condition="exists('AllConfigurations.props')" />, Это позволит открыть проект, даже если файл еще не доступен.
  5. Сохраните файл и добавьте его обратно в zip-файл шаблона.
  6. Скопируйте zip-файл в каталог < Мои документы > \ Visual Studio version \ Templates \ ProjectTemplates.

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

У меня такая же проблема. Мне не удалось добавить лист свойств в проект, поскольку он выглядит так, как будто Visual Studio (в моем случае 2013) обрабатывает листы свойств как проекты. Я ожидаю, что мог бы использовать некоторую комбинацию ProjectCollection и второго файла vstemplate, чтобы создать проект, который сначала состоит из листа свойств, а затем - моего реального проекта. Однако вместо этого я вместе взломал решение, потому что было гораздо меньше работы.

  1. Откройте файл.vcxproj и найдите первую строку, которая выглядит как <ImportGroup Label="PropertySheets" />

  2. Откройте свой файл листа пользовательских свойств, который содержит свойства, которые вы хотите добавить. Скопируйте все элементы под (но не включая) Project элемент.

  3. Вставьте весь этот контент непосредственно перед тем местом, которое вы нашли в шаге (1).

  4. Закомментируйте или удалите все подэлементы ImportGroup элементы, которые ссылаются на ваш лист свойств (теперь он должен выглядеть <!-- <Import Project="whatever.props" /> -->).

Повторно заархивируйте и установите шаблон. Теперь у вас должна быть возможность создать проект с интересующими вас свойствами. Недостатком является то, что полученный.vcxproj выглядит некрасиво, и у вас не будет отдельного листа свойств, но вы, по крайней мере, сможете распространять и ссылки на ваши свойства в новом типе проекта.

Другие вопросы по тегам