Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.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# 仅发布UWP情节提要和CallMethodAction的例外情况_C#_Uwp - Fatal编程技术网

C# 仅发布UWP情节提要和CallMethodAction的例外情况

C# 仅发布UWP情节提要和CallMethodAction的例外情况,c#,uwp,C#,Uwp,我正在调试一段代码,该代码使用CallMethodAction在UWP应用程序中触发情节提要。我的VS更新为最新版本(15.8.6)。我从VS 2017中得到的错误是: 在类型为的对象上找不到名为Begin的方法 与预期匹配的Windows.UI.Xaml.Media.Animation.Storyboard 签名 我必须手动打开VS中的异常,否则它只会显示: app.exe中0x5B79DC3C(Windows.UI.Xaml.dll)处未处理的异常: 0xC000027B:发生应用程序内部异

我正在调试一段代码,该代码使用CallMethodAction在UWP应用程序中触发情节提要。我的VS更新为最新版本(15.8.6)。我从VS 2017中得到的错误是:

在类型为的对象上找不到名为Begin的方法 与预期匹配的Windows.UI.Xaml.Media.Animation.Storyboard 签名

我必须手动打开VS中的异常,否则它只会显示:

app.exe中0x5B79DC3C(Windows.UI.Xaml.dll)处未处理的异常: 0xC000027B:发生应用程序内部异常 (参数:0x1DF30E70,0x00000003)。发生

经过几次尝试,我发现:

  • 故事板在调试中运行良好。只是在释放时崩溃了
  • 我进入故事板的定义,Begin的签名是:
  • public void Begin();
    
    看起来不错。(它在调试中工作…)

    Storyborad和DataTriggerBehavior的设置如下:

    <Storyboard x:Name="ShowOverlay">
      ... // doesn't really matter
    </Storyboard>
    
    <core:DataTriggerBehavior Binding="{Binding LogUploadStatus, Converter={StaticResource LogUploadStatusToBoolConverter}, ConverterParameter={StaticResource LogUploadStatusIdle}}" Value="False">
      <core:CallMethodAction TargetObject="{Binding ElementName=ShowOverlay}" MethodName="Begin" />
    </core:DataTriggerBehavior>
    
    
    ... // 没关系
    
    有人知道为什么异常只发生在发行版中吗?

    通常,您可以使用而不是。这是为支持控制
    情节提要
    元素而构建的特定行为:

    <Storyboard x:Name="ShowOverlay">
      ...
    </Storyboard>
    
    <core:DataTriggerBehavior Binding="{Binding LogUploadStatus, Converter={StaticResource LogUploadStatusToBoolConverter}, ConverterParameter={StaticResource LogUploadStatusIdle}}" Value="False">
      <core:ControlStoryboardAction Storyboard="{StaticResource ShowOverlay}"
                                    ControlStoryboardOption="Play" />
    </core:DataTriggerBehavior>
    
    幸运的是,有一种方法可以强制.NET本机编译器直接包含该类型,并帮助您这样做,您可以使用(命名方式是,在大多数情况下,当类型丢失时,这是您将得到的异常)

    在本例中,我已将
    情节提要
    Windows.UI.Xaml.Media.Animation.Storyboard
    )的完整路径放入工具的单一类型部分:

    并在下面选择访问成员或激活公共类型和成员

    在右侧,该工具将生成需要添加到Default.rd.xml文件中
    元素的
    声明,您可以在UWP项目的属性文件夹中找到该文件。在我们的例子中,结果可能如下所示(不包括注释):


    OMG这个答案比我想象的要好得多!非常感谢。很高兴它起了作用:-)。快乐编码!
    foreach (MethodInfo method in this.targetObjectType.GetRuntimeMethods())
    {
        ...
    }
    
    <Directives xmlns="http://schemas.microsoft.com/netfx/2013/01/metadata">
      <Application>
        <Assembly Name="*Application*" Dynamic="Required All" />
    
        <Type Name="Windows.UI.Xaml.Media.Animation.Storyboard" Dynamic="Required Public" />    
      </Application>
    </Directives>