ClickOnce 中的问题设置 AppDomain.CurrentDomain.UnhandleException

Problem setting AppDomain.CurrentDomain.UnhandleException in ClickOnce

在我的一个 ClickOnce 应用程序中,当我尝试订阅 AppDomain.CurrentDomain.UnhandledException

时收到 System.MethodAccessException

我的初始化代码如下所示:

App.xaml:

<mylib:MyApplicationBase x:Class="MyApplication.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:MyApplication"
    xmlns:mylib="clr-namespace:MyLib;assembly=MyLib"
>
</mydll:MyApplicationBase>

App.xaml.cs:

namespace MyApplication
{
    public partial class App : MyApplicationBase
    {
        public App()
        {
            var domain = AppDomain.CurrentDomain;
            // exception in next line
            domain.UnhandledException += OnUnhandledException;
        }

        public void OnUnhandledException(object sender, UnhandledExceptionEventArgs eventArgs)
        {
            // todo
        }
    }
}

在另一个程序集中: MyApplicationBase.cs

namespace MyLib
{
    public class MyApplicationBase : System.Windows.Application
    {
        // Some more code but no explicit constructor definitions
    }
}

代码 运行 如果不是由 ClickOnce 安装,则在同一台机器上没问题

我在其他应用程序中使用类似的方法没有问题

我得到的是 System.MethodAccessException 而不是根本问题。因为应用程序将项目属性安全设置为:

  • 启用 ClickOnce 安全设置:选中
  • 这是一个完全信任的应用程序:已选择

所以我采取的方法是:

  • 取消选中:启用 ClickOnce 安全设置
  • 发布(到本地文件夹)
  • 安装并 运行 在本地进行调查
  • 修复现在可见的潜在错误
  • 检查:启用 ClickOnce 安全设置
  • 发布
  • 在目标机器上安装并运行