Отсутствие зависимых сборок - как получить ошибку компилятора, а не ошибку времени выполнения - PullRequest
1 голос
/ 29 сентября 2010

Положение

Сборка Adam.dll имеет ссылку на сборку Frank.dll. Adam.dll помещается в общую папку сборок, а затем мое приложение ссылается на нее как на двоичную ссылку.

Если я запусту свое приложение, оно рухнет (и это правильно) из-за отсутствия Frank.dll.

Если, однако, я поместил Frank.dll в папку общих сборок, компилятор .net достаточно умен, чтобы переместить его в папку bin, и мое приложение запустится, даже если в моем приложении нет прямой ссылки на Frank.dll

Что я хочу

компилятор .net, очевидно, достаточно умен, чтобы понять, что моему приложению нужен Frank.dll. Можно ли установить опцию компилятора, чтобы она была помечена как ошибка во время компиляции?

Спасибо,

1 Ответ

0 голосов
/ 29 сентября 2010

Я не уверен, о какой папке «общих сборок» вы говорите, но я не был бы слишком уверен, что Visual Studio действительно «понимает, что вашему приложению нужен Frank.dll» - я подозреваю, что это больше вероятно, что он копирует все сборки, которые он там находит. Что произойдет, если вы разместите несвязанную сборку там? Если бы вы могли более подробно узнать, где именно находятся, какой тип проекта вы создаете и как вы добавляете ссылку на Adam.dll, это поможет.

Я не знаю ни одного способа принудительного копирования зависимых сборок во всех ситуациях - потому что на самом деле может не потребоваться. Frank.dll может понадобиться, только если вы используете определенные функции Adam.dll, например.

Если какой-то тип в Адаме, который вы использовали, выставил тип из Frank в своем открытом API, , тогда компилятор выдаст вам ошибку - но, очевидно, вы не хотите добавлять биты в публичный API только для ударов.

Хотя я знаю, что это не тот ответ, который вы ищете, я думаю, что вам, возможно, придется просто ухмыльнуться и вынести это ... достаточно ли в вашем коде сложных зависимостей, что это действительно проблема? Скорее всего, вы тратите достаточно времени из-за отсутствия зависимостей, поэтому стоит попытаться придумать схему, чтобы «исправить» это? Вы могли бы написать программу, которая загрузила сборку вашего приложения, нашла все ее зависимости, а затем проверила их наличие - и рекурсивную. Предположительно, это будет игнорировать зависимости уже в GAC. Я просто не уверен, что это того стоит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...