C# 为程序类引发TypeInitializationException异常

C# 为程序类引发TypeInitializationException异常,c#,visual-studio,exception,C#,Visual Studio,Exception,我的Windows窗体应用程序运行得更早,但突然停止运行。我得到以下例外情况: 例外情况如下: System.TypeInitializationException未处理 消息:mscorlib.dll中发生“System.TypeInitializationException”类型的未处理异常 其他信息:“NotificationTester.Program”的类型初始值设定项引发异常 System.IO.FileNotFoundException was unhandled Mes

我的Windows窗体应用程序运行得更早,但突然停止运行。我得到以下例外情况:

例外情况如下:

System.TypeInitializationException未处理
消息:mscorlib.dll中发生“System.TypeInitializationException”类型的未处理异常
其他信息:“NotificationTester.Program”的类型初始值设定项引发异常

System.IO.FileNotFoundException was unhandled
    Message: An unhandled exception of type 'System.IO.FileNotFoundException' occurred in mscorlib.dll
    Additional information: Die Datei oder Assembly "SIC, Version=19.2.6.3, Culture=neutral, PublicKeyToken=**************" oder eine Abhängigkeit davon wurde nicht gefunden. Das System kann die angegebene Datei nicht finden.
单击“确定”后,VS窗口将显示以下内容:


解决方案在早些时候运行良好。我不知道出了什么问题。

因此:
程序的某个字段初始值设定项或静态构造函数失败。找出原因。注意:
InnerException
具有引发的实际异常,但基本上:只需调试字段初始值设定项和静态构造函数。因此,在
程序
类中查找以下任一项:

static SomeType someField = /* some non-trivial expression or method call */ 
或:


一个可能的原因是:初始化一个带有重复键的静态字典。

我收到了相同的错误消息,就我的情况而言,原因是我的主程序被设置为构建32位控制台应用程序,并且我添加了一个访问64位dll的私有变量记录器

public class Program
{
    public static readonly Logger logger = new Logger(typeof(Program));

在我将主程序更改为64位构建后,问题得到了解决。

我的平台目标设置与任何CPU都有相同的错误,我更喜欢32位检查,取消选中最后一个选项解决了我的问题。

另一个可能的原因:app.config有重复的部分。

这是我在过去两个小时里不得不处理的一个奇怪问题。我通过从我创建的列表中删除static解决了这个问题

private static readonly List<Person> someList = GlobalConfiguration.Connection.PopulateList();
private static readonly List someList=GlobalConfiguration.Connection.PopulateList();
关于这一点:

private readonly List<Person> someList = GlobalConfiguration.Connection.PopulateList();
private readonly List someList=GlobalConfiguration.Connection.PopulateList();

希望它有帮助,您不必花两个小时来找出bug…

在我的例子中,原因是,
不是
配置文件中的第一个

每个元素只允许一个
元素 配置文件和(如果存在)必须是根
元素的第一个子元素

configSections
元素移动到配置文件的顶部


希望对某人有所帮助。

确保您没有丢失任何依赖项DLL。在我的例子中,我引用的一个DLL依赖于另一个DLL


如果是这样,请查看“内部异常”属性,然后您将看到更好的错误消息。在我的例子中,它说“找不到xxx.dll”

因此,如果您没有像我一样收到innerException消息,您可以在一些静态变量上设置断点,比如您可能声明的字符串。然后,您可以使用F10从那里向前调试。

对于我来说,这个问题是由在AppData\Local[Manufacturer][Product Name]目录中创建的恶意user.config文件引起的。我不确定它是如何出现的,但似乎不时会被创建。

尝试了这里列出的所有答案后,我有了一个新的答案:

“MyLibrary”的类型初始值设定项引发异常

System.IO.FileNotFoundException was unhandled
    Message: An unhandled exception of type 'System.IO.FileNotFoundException' occurred in mscorlib.dll
    Additional information: Die Datei oder Assembly "SIC, Version=19.2.6.3, Culture=neutral, PublicKeyToken=**************" oder eine Abhängigkeit davon wurde nicht gefunden. Das System kann die angegebene Datei nicht finden.
如果您在InnerException中看到如下内容

"Could not load file or assembly 'log4net, Version=1.2.13.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a' or one of its dependencies. The system cannot find the file specified.":"log4net, Version=1.2.13.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a"
在我的情况下,我的目录有正确的dll版本。(本例中为log4net.dll)

然后。。。问题被发现了。app.config中的程序集重定向

:(

由于我有正确的版本,我删除了所有重定向。您的情况可能会有所不同

  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="log4net" publicKeyToken="b32731d11ce58905" />
        <codeBase version="1.2.9.0" href="log4netv1.2.9.0\log4net.dll" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="log4net" publicKeyToken="1b44e1d426115821" />
        <codeBase version="1.2.10.0" href="log4netv1.2.10.0\log4net.dll" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" />
        <codeBase version="1.2.13.0" href="log4netv1.2.13.0\log4net.dll" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

我也有同样的问题:在MS VS 2015中运行程序并触发异常消息:

System.TypeInitializationException was unhandled
Message: An unhandled exception of type 'System.TypeInitializationException' occurred in mscorlib.dll
Additional information: Der Typeninitialisierer für "<Module>" hat eine Ausnahme verursacht.
我去参考并分析属性 属性:“Copy Local”为false-因为之前在GAC中安装了 解决方案:属性“Copy Local”设置为true并生成新程序集和工作:-)


也许这些信息很有用!祝你有愉快的一天

对我来说,这是一件非常愚蠢的事情。我不小心打了这样的字

<configuration>
    <appSettings>
         <add key="someKey" value="SomeValue" />sss
         <add key="someKey1" value="SomeValue1" />
    </appSettings>
</configuration> 

sss

sss-为我造成了错误。任何随机字符输入。

对于
TypeInitializationException
您需要检查InnerException属性以了解更多详细信息。我知道每当出现异常时,我应该通过单击异常弹出对话框上的异常详细信息链接来查找InException,如图所示。关键是我的代码没有进入
Program.Main()
,所以我无法调试代码。我按了F5,得到了这个异常。不幸的是,此异常对话框没有“查看详细信息”链接。所以我认为这个问题的否决票将被取消。哦,它的
static Program()
构造函数被@Marc gravel认可,希望异常描述能告诉我.Yip也有同样的问题。app.config中存在重复(复制粘贴错误)。已复制应用程序设置标记<代码>对我来说也是这样!我检查了我的源代码管理历史记录,发现了一个变化。我去掉了零钱,现在一切都好了。我们需要给@Stagg开一个派对。我在配置中添加了
元素时遇到了这个问题,该配置已经在使用
,就是这样。我通常将所有全局变量设置在顶部,并总是在构造函数中初始化它们。最近我一直在换,忘了先检查一下。