Visual Studio和MSSE防病毒编译时错误

Ale*_*kiy 28 .net c# debugging visual-studio visual-studio-2013

我的VS2013 Ultimate副本将此代码编译60秒以上:

class Program
{
    static void Main(string[] args)
    {
        double dichotomy = Dichotomy(
            d =>
            {
                try
                {
                    int size = (int) d;
                    byte[] b = new byte[size];
                    return -b.Length;
                }
                catch (Exception)
                {
                    return 0;
                }
            },
            0,
            int.MaxValue,
            1);

        Console.WriteLine(dichotomy);
        Console.ReadKey();
    }

    private static double Dichotomy(
        Func<double, double> func,
        double a,
        double b,
        double epsilon)
    {
        double delta = epsilon / 10;
        while (b - a >= epsilon)
        {
            double middle = (a + b) / 2;
            double lambda = middle - delta, mu = middle + delta;
            if (func(lambda) < func(mu))
                b = mu;
            else
                a = lambda;
        }
        return (a + b) / 2;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我取代doubleint,它会立即编译.怎么能解释......?

Han*_*ant 34

我在我的机器上重复了27秒.恶魔是MsMpEng.exe,它长达100%的核心.在任务管理器的"进程"选项卡中很容易看到.

这是Windows Defender服务,实际执行恶意软件扫描的服务.通过取消"打开实时保护"选项来禁用它可以立即修复延迟.那么将我存储项目的路径添加到"Excluded files locations"框中,可能是您首选的方法.

我不得不猜测潜在的原因,但不得不假设您的源代码触发了恶意软件规则.这不是一个很好的解释,当我将.NET版本<4.0时,我没有看到延迟.好的,我放弃了:)

  • 天哪,微软,你在开玩笑吧...Tnx 寻求帮助,真正的罪魁祸首是“MSSE”和“.Net 4.0+” (4认同)
  • 接得好!我想知道到底是什么导致了这个问题(特别是对于一个如此简单且几乎不包含外部依赖项的程序)。编译的结果 MSIL 字节是否可能看起来与已知恶意软件的模式完全一样,因此 MsMpEnd 会启动? (3认同)