最近升级10多年前的一个系统,选了VS2010开发.Net Framework 4.0上的WPF应用,为了维护方便,用ClickOnce发布。开发环境和测试都是Windows 7,在部署到XP上后,程序很容易突然就退出,在客户的机器上和测试的VMWare虚拟机上都是这样。跟踪代码最后发现打印相关的特别容易出问题,比如:访问PrintDialog.PrintableAreaWidth,printDialog.PrintDocument,有人有相同的问题吗?

解决方案 »

  1.   

    照理说.Net Framework的设计理念的一个主要出发点就是解决兼容性的问题呀,现在感觉很不靠谱啊!郁闷了
      

  2.   

    何苦升级呢
    何苦VS2010
    何苦WPF呢
    何苦.NET 4.0呢
      

  3.   

    当然是假的。VS2010就是基于wpf的,在xp上也没有见到崩溃。
      

  4.   

    我单开了一个项目,很简单的代码:
    private void button1_Click(object sender, RoutedEventArgs e)
            {
                PrintDialog printDialog = new PrintDialog();
                printDialog.PrintQueue = System.Printing.LocalPrintServer.GetDefaultPrintQueue();
                double width = printDialog.PrintableAreaWidth;
            }错误:
    运行时遇到了错误。此错误的地址为 0x58e38fed,在线程 0x1ad4 上。错误代码为 0x80131623。此错误可能是 CLR 中的 bug,或者是用户代码的不安全部分或不可验证部分中的 bug。此 bug 的常见来源包括用户对 COM-interop 或 PInvoke 的封送处理错误,这些错误可能会损坏堆栈。
      

  5.   

    这里的帖子说了类似的问题,但是和XPS相关的。可能和你需要的不同http://social.msdn.microsoft.com/Forums/en/wpf/thread/3af3bd37-c3fc-425b-bf9f-62bef9c4f4ed
      

  6.   

    最后装上.Net Framework 3.5 SP1后问题解决了好吧,整个发布包不到3M,却要拖上Framework 3.5和4.0,接近300M了,很有内容的样子,卖相不错
      

  7.   


    你不是4.0的程序吗?还要安装3.5 sp1?真tmd的奇怪。
      

  8.   

    是啊,4.0的,所以这个问题折腾了很久。我在虚拟机的XP上直接装了个VS2010,测试前面说的代码,一样的错误,所以一度认为这个问题没办法解决,只有去绕开了。现在想起来,其实Win7上是自带3.5的
      

  9.   


    你不是4.0的程序吗?还要安装3.5 sp1?真tmd的奇怪。
    安装4.0,是需要先安装3.5的。