Удаление зависимости от DLL подкласса - PullRequest
0 голосов
/ 05 июля 2011

(Контекст этого вопроса специфичен для XNA, но принцип является общим.)

У меня есть проект A с классом Game, который расширяет Microsoft.Xna.Framework.Game. Проект A является библиотекой классов и выводит DLL.

У меня есть проект B, который расширяет класс A.Game и имеет ссылку на A.dll. Когда я пытаюсь скомпилировать B, я получаю эту ошибку:

The type 'Microsoft.Xna.Framework.Game' is defined in an assembly that is not referenced. You must add a reference to assembly [...]

Я не понимаю, почему это так; B зависит только от A, который внутренне зависит от Xna. Это потому, что A.Game является подклассом? Есть ли способ удалить это требование зависимости?

То, к чему я стремлюсь, это сделать A самопубликацией; он выводит только одну DLL, и любой проект ссылается на нее; все, что он использует внутри, не требуется конечным пользователям (разработчикам).

Я также проверил этот вопрос на транзитивных зависимостях , но я пока не выставляю поля в A.Game - только подкласс.

Ответы [ 2 ]

2 голосов
/ 05 июля 2011

Нет способа избежать этого. Вы не можете статически связать библиотеку Xna с A, поэтому это означает, что для запуска A вам также понадобится библиотека Xna. Обратите внимание, что вы можете опубликовать A самостоятельно, а затем сообщить любым пользователям A, что им также нужна библиотека Xna, но это самое лучшее, что вы можете сделать.

Изображение у тебя было А, но нет Xna dll. Как вы могли бы создать экземпляр класса Game? Это подкласс типа, который содержится в dll Xna, так что это означает, что его базовый конструктор также находится в этой dll.

0 голосов
/ 05 июля 2011

Вам также необходимо добавить в B зависимость от XNA Framework.

...