Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум на Исходниках.RU > .NET: Общие вопросы > Ошибка .NET на другом компьютере |
Автор: Alexspam1 16.02.17, 10:53 |
Здравствуйте форумчане. Сразу оговорюсь, я не программист, но кое какие знания у меня есть. Так что сильно меня не убивайте. Проблема вот какая: Мой бывший сотрудик в далекие 2005-е написал программу на Visual Studio 2005 Естественно она не работает с windows 7. У меня на компьютере установлен Visual Studio 2015. С его помощую к открыл проект он атоматически обновил проект на новую версию, естественно выдал кучу ошибок... В общем (спасибо вам большое) с помощью форума я исправил все ошибки и проект запустился. Отлично работает, но только на моем компьютере где установлен висуал . Как только я переношу скомпилированный файл на другой компьютер (тоже windows 7 64 bit ) выскакивает ошибка .net framework Untitled.jpg (, : 329) Я уже вторую неделю бьюсь над этой проблемой перерыл весь форум, но или ошибка не исчезает или я просто не понимаю некоторые ответы. Устанавливал Разные версии .net на оба комьютера, ничего не помогает. Скажите пожалуйсто какую часть программы выставить на форуме, чтобы можно было понять в чем проблема. Заранее благодарен. |
Автор: MIF 16.02.17, 11:04 |
Скопируй всё соообшение из формы ошибки и запости его сюда. |
Автор: MIF 16.02.17, 11:07 |
добаВь try-catch в getRegistryValue метод. |
Автор: Alexspam1 16.02.17, 12:03 |
See the end of this message for details on invoking just-in-time (JIT) debugging instead of this dialog box. ************** Exception Text ************** System.NullReferenceException: Object reference not set to an instance of an object. at Anorad_test.frmMF.getRegsitryValue(String KeyName) at Anorad_test.frmMF.RegistryValidation() at Anorad_test.frmMF.Form1_Load(Object sender, EventArgs e) at System.EventHandler.Invoke(Object sender, EventArgs e) at System.Windows.Forms.Form.OnLoad(EventArgs e) at System.Windows.Forms.Form.OnCreateControl() at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible) at System.Windows.Forms.Control.CreateControl() at System.Windows.Forms.Control.WmShowWindow(Message& m) at System.Windows.Forms.Control.WndProc(Message& m) at System.Windows.Forms.ScrollableControl.WndProc(Message& m) at System.Windows.Forms.ContainerControl.WndProc(Message& m) at System.Windows.Forms.Form.WmShowWindow(Message& m) at System.Windows.Forms.Form.WndProc(Message& m) at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) ************** Loaded Assemblies ************** mscorlib Assembly Version: 4.0.0.0 Win32 Version: 4.0.30319.36373 built by: FX452RTMLDR CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll ---------------------------------------- Anorad test Assembly Version: 1.0.0.0 Win32 Version: 1.0.0.0 CodeBase: file:///E:/Anorad%20test.exe ---------------------------------------- Microsoft.VisualBasic Assembly Version: 10.0.0.0 Win32 Version: 12.0.52373.36373 built by: FX452RTMLDR CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Microsoft.VisualBasic/v4.0_10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll ---------------------------------------- System Assembly Version: 4.0.0.0 Win32 Version: 4.0.30319.36373 built by: FX452RTMLDR CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll ---------------------------------------- System.Core Assembly Version: 4.0.0.0 Win32 Version: 4.0.30319.36373 built by: FX452RTMLDR CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll ---------------------------------------- System.Windows.Forms Assembly Version: 4.0.0.0 Win32 Version: 4.0.30319.36373 built by: FX452RTMLDR CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll ---------------------------------------- System.Drawing Assembly Version: 4.0.0.0 Win32 Version: 4.0.30319.36373 built by: FX452RTMLDR CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll ---------------------------------------- System.Runtime.Remoting Assembly Version: 4.0.0.0 Win32 Version: 4.0.30319.36373 built by: FX452RTMLDR CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.Remoting/v4.0_4.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll ---------------------------------------- System.Configuration Assembly Version: 4.0.0.0 Win32 Version: 4.0.30319.36373 built by: FX452RTMLDR CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll ---------------------------------------- System.Xml Assembly Version: 4.0.0.0 Win32 Version: 4.0.30319.36373 built by: FX452RTMLDR CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll ---------------------------------------- ************** JIT Debugging ************** To enable just-in-time (JIT) debugging, the .config file for this application or computer (machine.config) must have the jitDebugging value set in the system.windows.forms section. The application must also be compiled with debugging enabled. For example: <configuration> <system.windows.forms jitDebugging="true" /> </configuration> When JIT debugging is enabled, any unhandled exception will be sent to the JIT debugger registered on the computer rather than be handled by this dialog box. Добавлено извени, не понял, что куда добавить? |
Автор: kosten 16.02.17, 12:07 |
Alexspam1, под отладчиком можешь посмотреть где происходит ошибка в методе getRegistryValue ? |
Автор: Alexspam1 16.02.17, 12:14 |
Цитата kosten @ не могу, debug и built ошибок не показывают Добавлено Private Function getRegsitryValue(ByVal KeyName As String) As String Dim TempKeyName As RegistryKey = Registry.LocalMachine.OpenSubKey("Software\Rockwell Automation\Anorad Test\TestSettings") getRegsitryValue = TempKeyName.GetValue(KeyName) TempKeyName.Close() Return getRegsitryValue End Function куда добавить? |
Автор: leo 16.02.17, 13:26 |
Цитата Alexspam1 @ Dim TempKeyName As RegistryKey = Registry.LocalMachine.OpenSubKey("Software\Rockwell Automation\Anorad Test\TestSettings") getRegsitryValue = TempKeyName.GetValue(KeyName) Видимо на другом компе такого ключа реестра просто нет, поэтому переменная TempKeyName остается не иницииализированной, и соотв-но на следующей строке (TempKeyName.GetValue) возникает ошибка |
Автор: Alexspam1 16.02.17, 13:29 |
я думал это функция как раз и добавляет ключ |
Автор: leo 16.02.17, 13:39 |
Нет, OpenSubKey только открывает уже существующий ключ. Если нужно открыть или создать, то используй CreateSubKey |
Автор: Alexspam1 16.02.17, 13:41 |
на компьютере с отладчиком тоже нет этого ключа, но все работает |
Автор: leo 16.02.17, 13:49 |
Ты уверен, что нет? Или что "все работает"? См. описание OpenSubKey Цитата Вот у тебя на следующей строке и возникает исключение "System.NullReferenceException: Object reference not set to an instance of an object.", т.к. TempKeyName = Null If the specified subkey cannot be found, then null is returned. |
Автор: Alexspam1 16.02.17, 13:51 |
100% уверен |
Автор: leo 16.02.17, 14:01 |
Попробуй так <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> if TempKeyName IsNot Nothing then getRegsitryValue = TempKeyName.GetValue(KeyName) TempKeyName.Close() end if |
Автор: Alexspam1 16.02.17, 14:32 |
Супер спасибо, все работает |