0

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

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

创建组件ctrlObjectEditor时出错。

错误消息:System.TypeInitializationException

项目.Log.LoggerHost”的 Typeinitializer 引发了异常。

... (仅粗略翻译)

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

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

有谁知道可能出了什么问题?

4

1 回答 1

0

看来我自己找到了答案。

类 FileLogger 有一个静态参数填充值:

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

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

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

这似乎有效。

于 2017-07-13T08:11:55.203 回答