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 安全设置
- 发布
- 在目标机器上安装并运行
在我的一个 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 安全设置
- 发布
- 在目标机器上安装并运行