MonoTouch: добавление ссылок на DLL в подпроекты
В некотором смысле я ищу здесь лучшую практику.
У меня есть общий проект, который используется многими моими приложениями. Этот проект имеет FlurryAnaylics и библиотеки ATMHud в качестве ссылок.
Если я не буду также ссылаться на эти библиотеки DLL в основном проекте, приложения часто, но не всегда, будут терпеть неудачу в тесте отладки на устройство. В отладке на симуляторе мне не нужно добавлять эти DLL в основной проект.
Итак, вопрос: нужно ли включать ссылки на библиотеки DLL в основной проект, который у меня есть в подпроектах все время?
1 ответ
По возможности я использую ссылки на файлы проекта (файлы csproj) поверх ссылок на сборки (.dll). Это делает многое проще, например:
- навигация по коду (IDE);
- автоматическая зависимость сборки (исходный код, который вы читаете, - это тот, который вы создаете, а не что-то потенциально несинхронизированное);
- отладка на уровне исходного кода (даже если вы можете использовать ее без нее, вы точно синхронизированы);
- (проще) переключаться между конфигурациями Debug|Release|...;
- изменение определяет (или любой вариант уровня проекта);
Например
Solution1.sln
- Project1a.csproj
- MonoTouch.Dialog.csproj (ссылка на../Common/MonoTouch.Dialog.csproj)
Solution2.sln
- Project2a.csproj
- MonoTouch.Dialog.csproj (ссылка на../Common/MonoTouch.Dialog.csproj)
Common.sln
- MonoTouch.Dialog.csproj
Большие решения могут немного пострадать от этого (повысить производительность, поиск по файлам...). Чем больше они получают, тем меньше вероятность, что каждый должен знать о каждой его части. Таким образом, прибыль уменьшается, а неудобства растут с каждым добавляемым проектом.
Например, я не хотел бы иметь ссылки на все сборки фреймворка внутри Mono (но лично я мог бы жить со всеми сборками SDK MonoTouch;-)
Примечание. Работа со ссылками на сборки не должна вызывать случайных ошибок при отладке на устройстве. Если вы можете создать такой тестовый пример, пожалуйста, заполните сообщение об ошибке:-)