Испорчена структура DLL в программе Visual Basic - PullRequest
0 голосов
/ 27 августа 2018

Я пытался установить JSON.NET для программы VB.NET ранее, файл .dll я могу импортировать просто отлично, но Visual Studio не распознает файл .pdb, который идет с ним. При поиске решения этой проблемы я изменил некоторые параметры отладки и, возможно, настройки dll, но все равно не смог заставить библиотеку JSON.NET работать.

Я расстроился и решил создать свой собственный метод для анализа файла JSON. Но теперь, выполнив несколько странных операций над stackoverflow ранее, простой код, который был бы действительным, выдает ошибку, например:

Dim strs() as String = {"dog", "cat"}

бросил бы

System.InvalidCastException: 'Conversion from string "dog" to type 'Integer' is not valid.'

Перед запуском программы она имеет журнал:

'BrokerNotifier.exe' (CLR v4.0.30319: DefaultDomain): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll'. Loading disabled by Include/Exclude setting.
'BrokerNotifier.exe' (CLR v4.0.30319: DefaultDomain): Loaded 'E:\Repository\Visual Basic\BrokerNotifier\BrokerNotifier\bin\Release\BrokerNotifier.exe'. Symbols loaded.
'BrokerNotifier.exe' (CLR v4.0.30319: BrokerNotifier.exe): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\Microsoft.VisualBasic\v4.0_10.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualBasic.dll'. Loading disabled by Include/Exclude setting.
'BrokerNotifier.exe' (CLR v4.0.30319: BrokerNotifier.exe): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\System.dll'. Loading disabled by Include/Exclude setting.
'BrokerNotifier.exe' (CLR v4.0.30319: BrokerNotifier.exe): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Core\v4.0_4.0.0.0__b77a5c561934e089\System.Core.dll'. Loading disabled by Include/Exclude setting.
'BrokerNotifier.exe' (CLR v4.0.30319: BrokerNotifier.exe): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Windows.Forms\v4.0_4.0.0.0__b77a5c561934e089\System.Windows.Forms.dll'. Loading disabled by Include/Exclude setting.
'BrokerNotifier.exe' (CLR v4.0.30319: BrokerNotifier.exe): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Drawing\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll'. Loading disabled by Include/Exclude setting.
'BrokerNotifier.exe' (CLR v4.0.30319: BrokerNotifier.exe): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Configuration\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Configuration.dll'. Loading disabled by Include/Exclude setting.
'BrokerNotifier.exe' (CLR v4.0.30319: BrokerNotifier.exe): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Xml\v4.0_4.0.0.0__b77a5c561934e089\System.Xml.dll'. Loading disabled by Include/Exclude setting.
'BrokerNotifier.exe' (CLR v4.0.30319: BrokerNotifier.exe): Loaded 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Runtime.Remoting\v4.0_4.0.0.0__b77a5c561934e089\System.Runtime.Remoting.dll'. Loading disabled by Include/Exclude setting.
Exception thrown: 'System.FormatException' in mscorlib.dll
Exception thrown: 'System.FormatException' in Microsoft.VisualBasic.dll
Exception thrown: 'System.InvalidCastException' in Microsoft.VisualBasic.dll
Exception thrown: 'System.FormatException' in mscorlib.dll
Exception thrown: 'System.FormatException' in Microsoft.VisualBasic.dll
Exception thrown: 'System.InvalidCastException' in Microsoft.VisualBasic.dll
An unhandled exception of type 'System.InvalidCastException' occurred in Microsoft.VisualBasic.dll
Conversion from string "dog" to type 'Integer' is not valid.

Что мне нужно сделать, чтобы решить эту проблему? У меня нет глубоких знаний о Visual Basic, таких как DLL-файлы или о том, как код работает вместе в .NET Framework. Я только недавно пришел из Java и C ++, поэтому предположим, что я ничего не знаю о .NET Framework. Любая помощь будет оценена.

1 Ответ

0 голосов
/ 28 августа 2018

Вам не нужен файл .pdb. Содержит отладочную информацию. Если библиотека выдает исключение, это позволит включить исключение в информацию об исходной строке.

Также используйте менеджер пакетов вместо того, чтобы ссылаться на DLL вручную:

  • Начните с удаления текущей ссылки на json DLL.
  • Щелкните правой кнопкой мыши проект в Visual Studio.
  • Выберите «Управление пакетами NuGet ...»
  • Переключиться на вкладку «Обзор».
  • Введите "json" в поле поиска. Вы получите длинный список вещей, связанных с JSON.
  • Выберите «Newtonsoft.Json» в этом списке (если вы используете библиотеку).
  • Нажмите кнопку «Установить».

Et voilà! Это также имеет то преимущество, что менеджер пакетов показывает вам обновления и позволяет устанавливать их одним щелчком мыши.


В случае, если ваше решение повреждено:

Создайте новое решение и добавьте весь ваш старый исходный код в качестве существующих элементов. Будьте осторожны с формами и пользовательскими или пользовательскими элементами управления. Добавляйте их по одному и добавляйте только файл * .vb, а не * .designer.vb и не файл * .resx. Последние поля будут добавлены Visual Studio автоматически.


В случае, если сама Visual Studio повреждена:

Запустите установщик Visual Studio и выберите параметр «Восстановить».

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