C#WPF应用程序在发布模式下变为乱七八糟但不是调试模式

时间:2014-02-27 09:11:58

标签: c# wpf visual-studio-2012 release visual-studio-debugging

从我的理解,如果没有弄错,发布模式应该编译更多的优化,因此大小更小。

我正在开发一个WPF C#应用程序,当我选择Release mode时,我的应用程序变得有线,但它在Debug mode中工作正常。我可以知道它有可能吗?这种情况最常见的因素是什么?

更新
当应用程序加载时,登录后的登陆页面将显示从数据库中检索到的信息。在debug mode时,信息确实显示为预期。但在Release mode中,信息未显示

数据库连接没有问题,因为如果有,用户根本无法登录。

对不起,我无法分享任何代码,因为项目太大了。我期待更多关于Release modeDebug mode之间的一般理解,并找出我所面临的可能原因。任何帮助将非常感激。

2 个答案:

答案 0 :(得分:1)

这里的biggesdt问题是Debug和Release只是项目中特定配置的占位符。您实际上可以按项目更改它们的含义。

默认情况下,差异实际上相当小。 Debug on Left, Release on right Click for large image

这意味着您可以使用配置管理器(右键单击解决方案资源管理器中的解决方案)来获取您的调试配置,并基于它创建一个新配置,并慢慢更改这些属性,以便您可以找到问题实际上是。

一个常被误解的技巧是你仍然可以调试一个发布程序集(即使在它被优化之后)。因此,您应该能够更好地了解正在发生的事情,然后再次提出您的问题。

答案 1 :(得分:0)

如果您使用MVVM Light,则有两种不同的模式:

    static ViewModelLocator()
    {
        ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);

        if (ViewModelBase.IsInDesignModeStatic)
        {
            SimpleIoc.Default.Register<IDataService, Design.DesignDataService>();
        }
        else
        {
            SimpleIoc.Default.Register<IDataService, DataService>();
        }

        SimpleIoc.Default.Register<MainWindowViewModel>();
    }

SimpleIoc.Default.Register fails at IsInDesignModeStatic if the Interface is in different assembly - 有很多问题。没有足够的数据来解决这个问题。