C# 仅发布UWP情节提要和CallMethodAction的例外情况
我正在调试一段代码,该代码使用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)。发生 经过几次尝试,我发现: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:发生应用程序内部异
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>