Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何局部禁用优化_C#_Compiler Optimization_Jit - Fatal编程技术网

C# 如何局部禁用优化

C# 如何局部禁用优化,c#,compiler-optimization,jit,C#,Compiler Optimization,Jit,我面临着一个奇怪的问题。我的应用程序有下一个代码,在启动时执行: protected override void RegisterTypes() { // App.container - UnityContainer var dvcc = new MyClientCore(new MySorter()); App.container.RegisterInstance(typeof(ClientCore), dvcc); App.container.Register

我面临着一个奇怪的问题。我的应用程序有下一个代码,在启动时执行:

protected override void RegisterTypes()
{
    // App.container - UnityContainer
    var dvcc = new MyClientCore(new MySorter());
    App.container.RegisterInstance(typeof(ClientCore), dvcc);
    App.container.RegisterInstance(typeof(MyClientCore), dvcc);

    this.dataProvider = new MyProvider();
    this.dataProvider.Configure(App.container);
    App.container.RegisterInstance(typeof(Provider), this.dataProvider);
    App.container.RegisterInstance(typeof(MyProvider), this.dataProvider);

    // Create view models and register them in container
    this.RegisterViewModels();

    // Command - singleton, that resolved in ctor view models, 
    // that registered in RegisterViewModels();
    Command.Instance.InitCommands();

    // Create and configure shell 
}
当应用程序在调试配置中执行时,没有问题。当应用程序在VisualStudio的版本配置中执行时也是如此。 但当我尝试直接启动应用程序时,由于dataProvider.Configure方法中注册的依赖项的解析,我在命令ctor中得到TypeInitializationException

我认为这是JIT优化的原因,代码的执行可能是这样的

protected override void RegisterTypes()
{
    Command.Instance.InitCommands();
    // other method body
}
我找到了该方法的解决方案-标记RegisterTypes方法atribute[MethodImpl(MethodImplOptions.NoOptimization)]

但也许有更好的方法来修复它?当我用简单的语言解释这种情况时,我也会很高兴与林克联系


另外,对不起我的英语。

为什么你认为这是JIT优化?“当应用程序在调试配置中执行时没有问题。当应用程序在visual studio中的发布配置中执行时也没有问题。”发布配置已启用优化,甚至在visual studio下运行,因此您已经显示它可以在启用优化的情况下工作。您没有提供足够的代码来重现错误,因此其他人无法对其进行调查。解决方案包含多个项目和完整的例子将是大。我认为,因为问题是在添加[MethodImpl(MethodImplOptions.NoOptimization)]后解决的,为什么您认为这是JIT优化?“当应用程序在调试配置中执行时没有问题。当应用程序在visual studio中的发布配置中执行时也没有问题。”发布配置已启用优化,甚至在visual studio下运行,因此您已经显示它可以在启用优化的情况下工作。您没有提供足够的代码来重现错误,因此其他人无法对其进行调查。解决方案包含多个项目和完整的例子将是大。我认为是这样的,因为在添加[MethodImpl(MethodImplOptions.NoOptimization)]之后问题就解决了