【问题标题】:Windows Forms Toolbox System.TypeInitializationException with UserControls带有 UserControls 的 Windows 窗体工具箱 System.TypeInitializationException
【发布时间】:2017-07-13 16:11:55
【问题描述】:

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

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

创建组件时出错ctrlObjectEditor

错误信息:System.TypeInitializationException

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

... (仅粗略翻译)

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

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

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

【问题讨论】:

    标签: c# winforms user-controls typeinitializeexception


    【解决方案1】:

    看来我自己找到了答案。

    FileLogger 类有一个静态参数,其中填充了值:

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

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

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

    这似乎有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-02
      • 1970-01-01
      • 2011-08-10
      • 2023-04-01
      • 2010-09-18
      • 1970-01-01
      相关资源
      最近更新 更多