Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.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
Цитата MIF @
Скопируй всё соообшение из формы ошибки и запости его сюда.

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.

Добавлено
Цитата MIF @
добаВь try-catch в getRegistryValue метод.

извени, не понял, что куда добавить?

Автор: kosten 16.02.17, 12:07
Alexspam1, под отладчиком можешь посмотреть где происходит ошибка в методе getRegistryValue ?

Автор: Alexspam1 16.02.17, 12:14
Цитата kosten @

не могу, debug и built ошибок не показывают

Добавлено
Цитата MIF @
добаВь try-catch в getRegistryValue метод.



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 @
Видимо на другом компе такого ключа реестра просто нет

я думал это функция как раз и добавляет ключ

Автор: leo 16.02.17, 13:39
Нет, OpenSubKey только открывает уже существующий ключ. Если нужно открыть или создать, то используй CreateSubKey

Автор: Alexspam1 16.02.17, 13:41
Цитата leo @
Видимо на другом компе такого ключа реестра просто нет

на компьютере с отладчиком тоже нет этого ключа, но все работает

Автор: leo 16.02.17, 13:49
Цитата Alexspam1 @
на компьютере с отладчиком тоже нет этого ключа, но все работает

Ты уверен, что нет? Или что "все работает"?

См. описание OpenSubKey
Цитата
If the specified subkey cannot be found, then null is returned.
Вот у тебя на следующей строке и возникает исключение "System.NullReferenceException: Object reference not set to an instance of an object.", т.к. TempKeyName = Null

Автор: Alexspam1 16.02.17, 13:51
Цитата leo @
Ты уверен, что нет? Или что "все работает"?

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
Цитата leo @
Попробуй так

Супер спасибо, все работает

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)