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 или переносные библиотеки классов.