Требуется обходной путь: уведомить пользователя, что в приложении отсутствуют зависимости внутри приложения? - PullRequest
2 голосов
/ 02 февраля 2011

Я написал быстрое консольное приложение, которое использует DLL-файлы SharePoint. Если я попытаюсь запустить его на компьютере, на котором нет файлов DLL, приложение сразу же завершит работу при открытии.

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

Ответы [ 4 ]

2 голосов
/ 02 февраля 2011

К сожалению, вам придется написать приложение запуска - если вы думаете об этом, необходимые библиотеки DLL должны быть там, чтобы основное приложение даже запустилось.Если вы встраиваете сканирование в свое основное приложение, оно не запустится из-за отсутствующих библиотек DLL.

Возможно, вы сможете использовать архитектуру плагинов, которая сканирует необходимые библиотеки DLL и загружает их динамически ( MEF приходит на ум).

1 голос
/ 02 февраля 2011

Как насчет упаковки загрузки этого dll в:

 try { 
      Assembly.Load(..);
 }
 catch(TypeLoadException ex) {

         //Let the user know which type from what dll was not loaded.
 }

Вам придется загрузить эту DLL во время выполнения, чтобы на самом деле сделать это.

0 голосов
/ 02 февраля 2011

если ваше приложение ссылается непосредственно на библиотеки или сборки SharePoint, нет способа уведомить пользователя, потому что .NET CLR не выполнит ваш код, если какая-либо из статически связанных необходимых сборок недоступна.

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

0 голосов
/ 02 февраля 2011

Может быть возможно скопировать сборки в выходной каталог для sharepoint.Так что ссылки делаются локально.

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