Windows VB.net程序在使用/optimize+;目标框架是.NETFramework4

Windows VB.net程序在使用/optimize+;目标框架是.NETFramework4,windows,vb.net,.net-4.0,Windows,Vb.net,.net 4.0,我有一个VB.net windows程序。它是用VS 2010 Ultimate(版本10.0.10219.1 SP1Rel)编译的。在windows窗体中,有一个TreeView控件。使用选项/optimize+编译程序时,程序将崩溃,目标框架为.Net framework 4 我尝试了四组编译选项 A.选中启用优化,目标框架:.Net framework 4。 B取消选中启用优化,目标框架:.Net framework 4。 C选中启用优化,目标框架:.Net framework 3.5。

我有一个VB.net windows程序。它是用VS 2010 Ultimate(版本10.0.10219.1 SP1Rel)编译的。在windows窗体中,有一个TreeView控件。使用选项/optimize+编译程序时,程序将崩溃,目标框架为.Net framework 4

我尝试了四组编译选项
A.选中启用优化,目标框架:.Net framework 4。
B取消选中启用优化,目标框架:.Net framework 4。
C选中启用优化,目标框架:.Net framework 3.5。
D取消选中启用优化,目标框架:.Net framework 3.5

实际结果:使用#a选项编译的exe崩溃。弹出“未处理的异常”对话框,其中包含以下异常文本。使用选项#b、#c或#d编译的exe运行良好

************** Exception Text **************
System.NullReferenceException: Object reference not set to an instance of an object.
   at System.Windows.Forms.TreeView.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
预期结果:当单击树视图复选框时,使用选项#a编译的exe不应崩溃。至少使用选项#a和#b编译的exe的行为应该是相同的

比较选项a和选项b的构建输出。唯一的区别是选项/optimize+和/optimize-。我猜Vbc.exe没有正确处理optimize选项,这会导致不同的运行时结果。一个是崩溃,另一个不是

我怎样才能避免这种碰撞?这是编译工具Vbc.exe的缺陷吗

在本文()中,它指出异常框架在.NET4中发生了更改。我试图将
添加到配置文件中。它不起作用

更新:删除编译输出。添加记录到miscrosoft的问题的链接

我已将此问题记录到miscrosoft。源代码可以在那里下载


在porject中,只有一个名为MainUI的表单。它包含一个名为TreeView的树视图控件。TreeView类用于扩展状态不确定的TreeView控件的选中按钮。通过使用WIN API调用更新按钮状态图像来修改该行为

如果你发布了实际的源代码,而不是成功构建的输出,那么回答这个问题就会容易得多。这个网站不支持源代码附件。你有什么建议把源代码上传到哪里吗?发布源代码是可以支持的。不需要附件。