带有UserControls的Windows窗体工具箱System.TypeInitializationException

时间:2017-07-05 08:33:01

标签: c# winforms user-controls typeinitializeexception

我正在使用VS2015使用Windows窗体的UserControls处理项目。 我最后一次使用控件一切正常,它根本没有显示错误。但是,重新启动VS后,工具箱无法显示控件。

当我开始将控件添加到其他表单时,它会显示错误:

  

创建组件 ctrlObjectEditor 时出错。

     

错误消息:System.TypeInitializationException

     

" 项目的Typeinitializer .Log.LoggerHost"提出了一个例外。

     

... (仅粗略翻译)

当我运行程序时,它工作正常,但我无法在工具箱中编辑它。

控件都在同一个程序集中。 我找到了其他问题,但它们似乎对我不起作用。 (例如AnyCPU,x64,x86,从控件中删除Logger)

有没有人知道可能出现什么问题?

1 个答案:

答案 0 :(得分:0)

我似乎找到了答案。

Class FileLogger有一个静态参数,其值为:

Path.GetDirectoryName(Assembly.GetEntryAssembly().Location)

似乎这个方法在设计师运行时会导致异常,因此我将其替换为:

try
{
    var dir = Path.GetDirectoryName(Assembly.GetEntryAssembly()?.Location);
    return Path.Combine(dir, "Logs");
}
catch (ArgumentException)
{
    return "C:\\Logs";
}

这似乎有效。