Как предотвратить сбой при запуске при необходимости dll? [Дубликат]

Все будет ОК, если вы измените исходный код следующим образом:

if ((cin >> name).get() && std::getline(cin, state))
20
задан Richard Morgan 10 July 2009 в 19:40
поделиться

2 ответа

Расширение ответа Джоша.

Ассембли в .Net загружаются по требованию с помощью CLR. Обычно загрузка сборок не будет предпринята до тех пор, пока не будет выбран метод JIT'd, который использует тип из этой сборки.

Если вы не можете поймать сбой сборки сбоку с помощью блока try / catch в основном методе, скорее всего, вы используете тип из сборки в try / catch. Таким образом, исключение возникает до того, как основной метод будет запущен.

Попробуйте поместить весь код из основного метода в другую функцию. Затем вызовите эту функцию внутри блока try / catch, и вы увидите исключение.

34
ответ дан JaredPar 21 August 2018 в 15:35
поделиться
  • 1
    Эта утонченность - это то, чего мне не хватало. Большое спасибо. – Richard Morgan 10 July 2009 в 20:02

Вы можете использовать AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);

  Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
    {
    }

. Чтобы вручную найти сборку, если она не может найти ее автоматически.

30
ответ дан JoshBerke 21 August 2018 в 15:35
поделиться