Прежде всего, я использую Visual Studio 2010, Плагин Measurement Studio 2010 , C # и .NET 4.0.
Мое приложение получает данные с устройства USB и отображает их с помощью графиков.WaveformPlot()
[который является частью Measurement Studio].Я могу нормально запустить приложение в режимах отладки и выпуска и даже запустить его напрямую, используя файл EXE в папках bin
на компьютере разработчика.
Однако я просто не могу запустить его на другом компьютере.Я использую ClickOnce для создания установочного файла и папок, и я копирую папку публикации со своего компьютера разработчика на клиентский компьютер.Затем я запускаю установочный файл, ClickOnce загружает .NET (если он еще не установлен) и затем открывает приложение.Приложение показывает мой начальный диалог с просьбой выбрать COM-порт из множества доступных.Как только я это делаю, мой код проходит через InitializeComponent()
, после чего должна отображаться основная форма.
Основная форма не открывается после начального поля.Используя операторы Debug.WriteLine
, я смог сузить его до
this.waveformPlot = new NationalInstruments.UI.WaveformPlot();
Здесь происходит сбой.Это не показывает мне ни сообщения об ошибке, ни чего-либо.Он отлично работает на моем компьютере, но не на других компьютерах.Я включил файлы National Instruments DLL и другие компоненты National Instruments отлично инициализированы.Это просто тот, который не делает.Приложение некоторое время появляется в диспетчере задач Windows, а затем просто исчезает примерно через 10 секунд.
Что мне делать?
Обновление 1
Прочитав еще один не связанный вопрос о переполнении стека, я понял, что могу поставить Application.run
и form1 mainform = new form1()
в блоке try-catch.
System.TypeInitializationException: инициализатор типа для броска и исключения «NationalInstruments.UI.Internal.WaveformPlotElement».-> System.IO.FileNotFoundException: не удалось загрузить файл или сборку 'NationalInstruments.Common.Native.dll' или одну из ее зависимостей.Указанный модуль не может быть найден.
Поскольку я, по крайней мере, теперь знаю, что это исключение, я поработаю над ним, постараюсь выяснить, какая DLL отсутствует и почему, и обновлю этот вопрос.
Обновление 2
Я проверил файлы приложения, которые находятся в папке публикации, и в них есть файл «NationalInstruments.Common.Native.dll».Я понятия не имею, почему это не может загрузить это.
Обновление 3
Я запустил Fusion Log Viewer на клиентском компьютере и увидел, что NationalInstruments.Common.Native.dll
был успешно загружен.Но все равно сообщение об исключении отладки отображается так, как показано в OP,
Не удалось загрузить файл или сборку 'NationalInstruments.Common.Native.dll' или одну из их зависимостей "
Скриншот того, что показывает Fuslogvw.exe
Fuslog Viewer показывает, что все сборки были успешно загружены. Я проверил на клиентском компьютере. Хотя, НациональныйВ DLL-файлах инструментов есть строка с надписью «Поиск в GAC неудачен», в то время как в других сборках этого нет.
DebugViewer отображает исключение, которое я распечатываю с использованием Debug.writeLine
.не удалось загрузить одну из его зависимостей.
Я очень смущен.
Я попытался добавить ссылки в проект, используя декомпилятор для проверки ссылок, используя другие программы установки (другиечем ClickOnce) и ни один из них, кажется, никуда меня не приводит.: (
Обновление 4
Я только что узнал вчера, чтоПриложение устанавливалось и работало нормально на 64-битных системах.Два компьютера, на которых я пробовал это раньше, были 32-битными системами Windows 7.Я смотрю, может ли это как-то помочь мне.Приложение было скомпилировано на моем 64-битном ноутбуке под управлением Windows 7. В раскрывающемся меню «Платформа» в «Построить» в свойствах проекта отображается «Активно (x86), и в качестве цели платформы выбрано« Любой ЦП ».