Подтвердить что ты не робот

Как создать шаблон проекта Visual Studio, который включает связанные файлы?

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

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

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

4b9b3361

Ответ 1

Вы должны установить свойство CreateInPlace в true в vstemplate. документация говорит

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

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

Ответ 2

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).

Ответ 3

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