C# 编辑并继续中断正在运行的调试实例

C# 编辑并继续中断正在运行的调试实例,c#,xna,monogame,edit-and-continue,C#,Xna,Monogame,Edit And Continue,我正在做一个项目,我使用第三方库,这似乎给我带来了一些麻烦 该项目是一个使用单游戏和远场物理的游戏 导致问题的代码(下面的github): 我在colorDrawColor=Color.White*0.4f上设置了一个断点并将浮点值更改为其他值。当我继续时,BoundingShape.ComputeAbb(…)上会创建一个NullReferenceException。 它还显示了名为BoundingShape的两个属性和两个字段_shape(这是BoundingShape的背景字段) 这是我的错

我正在做一个项目,我使用第三方库,这似乎给我带来了一些麻烦

该项目是一个使用单游戏和远场物理的游戏

导致问题的代码(下面的github):

我在
colorDrawColor=Color.White*0.4f上设置了一个断点
并将浮点值更改为其他值。当我继续时,
BoundingShape.ComputeAbb(…)
上会创建一个NullReferenceException。 它还显示了名为BoundingShape的两个属性和两个字段_shape(这是BoundingShape的背景字段)

这是我的错还是我可以解决的

。 请注意局部视图,边界形状已复制。 此外,实体(包含正在编辑的代码的类)是抽象的,并且级别完全实现了抽象类

奇怪的是:

它一定和out和ref参数有关,因为如果我在数组中返回LowerBound和UpperBound,它就会工作,但如果我返回AABB实例,它就会失败

我尝试过的事情:

  • 直接使用BoundingShape的backing字段(没有结果,backing字段也被复制,请参见屏幕截图)

  • 将边界框代码放在它自己的方法中(没有结果,仅当将返回类型更改为数组时)

  • 在不在Microsoft.Xna.Framework.Game.SortingFilteringCollection.ForEachFilteredItem(System.Action Action,Microsoft.Xna.Framework.GameTime userData)的foreach循环中更改代码

从我的工作环境中解脱出来;是否有一些visual studio设置导致了这种情况


感谢您阅读我的问题

E+C出现错误,特别是如果这是VS2015,或者此代码以64位模式运行,或者如果您尚未安装Update 1,则更是如此。这里没有人可以帮你修复这个bug,请在connect.microsoft.com上报告。我有这个漏洞,但没有时间检查,因为我需要在接下来的几天内完成这个项目。我希望下周末能试试我的相机。提到了相同的行为,并且似乎与自动生成的程序集版本号有关。我不使用自动生成版本号,所以我猜那些monogame的内容管道项目会触发这种行为。x86或安装Update 1无法解决此问题。在安装VS2015 Update 2之后,我已经有一段时间无法重复此问题,尽管有一些评论声称在某些情况下它仍然不起作用。E+C错误会发生,特别是如果这是VS2015或此代码以64位模式运行,或者如果尚未安装Update 1,则更是如此。这里没有人可以帮你修复这个bug,请在connect.microsoft.com上报告。我有这个漏洞,但没有时间检查,因为我需要在接下来的几天内完成这个项目。我希望下周末能试试我的相机。提到了相同的行为,并且似乎与自动生成的程序集版本号有关。我不使用自动生成版本号,所以我猜那些monogame的内容管道项目会触发这种行为。x86或安装更新1无法解决此问题。在安装VS2015更新2之后,我已经有一段时间无法重复此问题,尽管有一些评论声称在某些情况下它仍然不起作用。
    private void DrawDebug(GameTime gameTime, RenderBatch renderBatch)
    {
        AABB boundingBox = GetBoundingBox();
        Vector2 tl = new Vector2(boundingBox.LowerBound.X, boundingBox.LowerBound.Y);
        Vector2 tr = new Vector2(boundingBox.LowerBound.X, boundingBox.UpperBound.Y);
        Vector2 bl = new Vector2(boundingBox.UpperBound.X, boundingBox.LowerBound.Y);
        Vector2 br = new Vector2(boundingBox.UpperBound.X, boundingBox.UpperBound.Y);

        Color drawColor = Color.White * 0.4f;
        renderBatch.Queue(new DrawLineInstruction(tl, tr, 0) { Color = drawColor });
        renderBatch.Queue(new DrawLineInstruction(tl, bl, 0) { Color = drawColor });
        renderBatch.Queue(new DrawLineInstruction(tr, br, 0) { Color = drawColor });
        renderBatch.Queue(new DrawLineInstruction(bl, br, 0) { Color = drawColor });
    }

    private AABB GetBoundingBox()
    {
        AABB boundingBox;
        FarseerPhysics.Common.Transform transform = GetFarseerTransform();
        BoundingShape.ComputeAABB(out boundingBox, ref transform, 0);
        //Weird edit-and-continue bug where properties are duplicated after editing this class
        return new AABB() { LowerBound = boundingBox.LowerBound, UpperBound = boundingBox.UpperBound };
    }