Visual Studio 2012 Как отладить ошибку "Не удалось добавить ссылку на проект x"?

В Visual Studio 2012 в пустой новой библиотеке классов я пытаюсь добавить ссылку на существующий проект в решении, также Библиотека классов, MonoGame.Framework.Windows8 (https://github.com/mono/MonoGame), но получите ошибку:

Невозможно добавить ссылку на Project MonoGame.Framework.Windows8

Я успешно создал существующую библиотеку MonoGame и сделал ее зависимой от новой. В чем может быть проблема?

(Это очень раздражает сообщение об ошибке, не дает причины!)

Ответ 1

Попытка добавить встроенную dll имеет ссылку, дало более явное сообщение об ошибке, которое решило проблему для меня, она сказала:

"Ссылка на" x "не может быть добавлена. Проект нацелен на".NetFramework, когда ссылка на файл нацелена на ".NetCore". Это не поддерживаемый сценарий "

Библиотека классов MonoGame - это библиотека классов (Windows Store apps)! (Бит в скобках важен! Предположительно, разница в типе приложений Windows Store использует .Net Core, который не совпадает с .NET Framework).

Итак, чтобы его работа работала, ваш проект должен быть библиотекой классов (приложения для Windows Store), доступной в разделе "Магазин Windows" в "Добавить новый проект".

Ответ 2

Я подозреваю, что проблема связана с "Target Framework" в параметрах проекта.

Я не знаю, как MonoGame работает для Windows 8, но когда вы разрабатываете для Android целевые параметры инфраструктуры - это разные версии Android (например, Android 2.2 (Froyo)]. Когда вы создаете обычную библиотеку классов, у вас есть выбор между различными версиями .NET framework или Mono (например, Mono/.NET 4.0].

К сожалению, эти рамки несовместимы друг с другом. Вы не можете добавить ссылку на проект для Android в библиотеку классов .NET Framework и наоборот.

Решение состоит в использовании Portable Class Library. Они специально разработаны для решения этой проблемы. Недостатком является то, что вы будете иметь доступ только к подмножеству сборок, предоставляемых в самом нижнем знаменателе, который вы выбрали для таргетинга.

Вы также можете рассмотреть возможность совместного использования кода между проектами с использованием связанных файлов. Это может сделать обслуживание немного сложнее, но дает вам немного больше контроля над кодом, который должен компилироваться в обеих целевых средах, но не вписывается в переносимую библиотеку классов. Вот связанный с этим вопрос:

Ссылка на проект и ссылки на файлы в многоцелевых проектах Mono

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

Ответ 3

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

Ответ 4

Тот же вопрос, который я предполагаю здесь: Приложения Metro Visual Studio 11 не могут добавить ссылку?

Ответ был:

К чему вы добавляете ссылку? Приложения в стиле Metro могут добавлять только ссылки на другие библиотеки классов Metro или переносные библиотеки классов.