Как создать шаблон проекта Visual Studio, который включает связанные файлы? - PullRequest
17 голосов
/ 25 мая 2011

В Visual Studio 2010 я хочу создать шаблон проекта, который включает ссылки на два файла , которые должны существовать в системе. Одним из них является общий файл AssemblyInfo.cs. Другим является файл ключа строгого имени (* .snk).

Мне нужно, чтобы эти ссылки были относительно , потому что рабочее пространство каждого разработчика будет настраиваться по-разному. Возможно ли, чтобы шаблон проекта каким-то образом выяснил, где эти файлы находятся в среде каждого разработчика?

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

Ответы [ 3 ]

18 голосов
/ 05 января 2012

Необходимо установить для свойства CreateInPlace значение true в vstemplate. документация говорит

Указывает, следует ли создать проект и выполнить замену параметра в указанном местоположении или выполнить замену параметра во временном местоположении, а затем сохранить проект в указанном местоположении.

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

2 голосов
/ 23 июня 2011

Microsoft подтвердила, что это ошибка в модели расширяемости и шаблонах проектов. Мне удалось обойти это с помощью IWizard. Я добавил следующий код в метод RunFinished моей реализации IWizard:

    //Get linked file directory
    string coreDir = Path.GetDirectoryName(MyProject.FullName);

    //Data folder
    ProjectItem propertiesProjectItem = slSharedProject.ProjectItems.Cast<ProjectItem>().Where(p => p.Name == "Data").First();
    propertiesProjectItem.ProjectItems.AddFromFile(coreDir + @"\Service\TheFileIWantToLink.cs");

Этот код ссылается в копии файла TheFileIWantToLink.cs на мой общий проект Silverlight (slSharedProject).

1 голос
/ 26 мая 2011

Вы можете попытаться интегрировать мастера в шаблон проекта и указать пути к связанным файлам.Если я правильно помню, вам не нужно создавать интерфейс пользователя;вам нужно только указать правильные замены в replacementsDictionary , и VS заменит значения в вашем файле шаблона.См. это или это для получения дополнительной информации.

...