Как добавить ссылку на проект общего кода (.shproj) из другого проекта

Когда я создал новый проект универсального приложения в Visual Studio, он создал общий проект, который позволяет мне совместно использовать код между созданными проектами Windows Phone 8.1 и Windows 8.1.

Теперь у меня есть другие проекты, которые я также хотел бы использовать для этого общего кода. Однако я не вижу способа добавить этот проект в окно "Добавить ссылку...".

Если я попытаюсь скопировать ссылку из одного из существующих проектов, я получаю ошибку:

Катастрофический сбой (исключение из HRESULT: 0x8000FFFF (E_UNEXPECTED))

когда я нажимаю "Вставить ссылку". Как ссылаться на общий проект из других проектов?

Ответы

Ответ 1

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

В нижней части файла проекта (например,.csproj), вероятно, уже есть элемент <Import>, например

<Project ...>
  [...]
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

Вы добавляете проект Shared, добавляя еще один такой элемент для проекта Shared. Например:

<Project ...>
  [...]
  <Import Project="..\Shared\Shared.projitems" Label="Shared" />
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

Для атрибута Label важно установить значение "Shared". Если вы установите его на что-то еще, он не будет распознан как проект Shared Visual Studio и не появится в списке "Ссылки". Проект должен быть установлен в путь к соответствующему файлу .projitems.

Ответ 2

Visual Studio 2017:

Щелкните правой кнопкой мыши элемент "Ссылки или зависимости" в обозревателе решений и выберите "Добавить ссылку..."

Зависимости или контекстное меню ссылок

Откроется диспетчер ссылок. Нажмите "Общий проект" в левой части диспетчера ссылок

введите описание изображения здесь

Затем выберите свой проект и нажмите "ОК".

Ответ 3

В TargetProject.csproj добавьте эту строку:

<Import Project="..\YourSharedProject\YourSharedProject.projitems" Label="Shared" Condition="Exists('..\YourSharedProject\YourSharedProject.projitems')" />