Мультипроектный шаблон VS 2010: межпроектные ссылки - PullRequest
6 голосов
/ 29 марта 2012

Я сейчас занимаюсь разработкой многопроектного шаблона.Я использую подход, описанный здесь: Как: создать многопроектные шаблоны .Этот шаблон будет иметь основной шаблон веб-сайта (смоделированный после temaplte MVC 3) и несколько дополнительных шаблонов библиотеки вызовов для разделения функциональности.

Пример: WebsiteProject1 находится в папке в проекте шаблона и имеет все свои файлы и .vstemplate в этой папке. ClassLibrary1 находится в другой папке в проекте шаблона и также имеет свой собственный файл .vstemplate.

Мой вопрос заключается в том, как настроить ссылки в WebsiteProject1 для ClassLibrary1, чтобы при создании проекта из шаблона ссылки присутствовали и разрешались?Это вообще возможно?

1 Ответ

6 голосов
/ 17 октября 2012

Я работал над подобной настройкой сегодня и обнаружил, что это действительно возможно, но это требует ручной настройки файла csproj вашего WebsiteProject после экспорта шаблона. Также есть какая-то ошибка, когда нет замены токена в теге Name под тегом ProjectReference.

Обычно вы хотите, чтобы файл csproj содержал следующее:

<ItemGroup>
    <ProjectReference Include="..\$SolutionName$.Library\$SolutionName$.Library.csproj">
        <Project>{8a8efea7-e80c-4de2-8c35-ced49a814675}</Project>
        <Name>ClassLibrary</Name>
    </ProjectReference>
</ItemGroup>

Обратите внимание, что я не заменил значение тега , поскольку замены токенов не работают. К счастью, это не мешает работе справки.

EDIT : Использование $ safeprojectname $ будет ссылаться на сам проект. Если ваша библиотека классов имеет жестко закодированное имя, это на самом деле не проблема, но в моем случае я хотел имя, такое как «NewProject.Library», я решил это, добавив CustomParameter $ SolutionName $, например, в свой многостраничный файл vstemplate:

<CustomParameters>
  <CustomParameter Name="$SolutionName$" Value="$safeprojectname$"/>
</CustomParameters>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...