我最近安装了Visual Studio 2012.
但是,在安装之后,以前在Visual Studio 2010中正常工作的项目开始抛出并崩溃以下错误:
'System.TypeInitializationException:'MyType'的类型初始值设定项 抛出一个例外。 ---> System.IO.FileNotFoundException:无法 加载文件或程序集“MyAssembly.XmlSerializers”或其中一个 依赖。系统找不到指定的文件。
在System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase,Evidence assemblySecurity,RuntimeAssembly locationHint,StackCrawlMark& stackMark,IntPtr pPrivHostBinder, Boolean throwOnFileNotFound,Boolean forIntrospection,Boolean suppressSecurityChecks)
在System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase,Evidence assemblySecurity,RuntimeAssembly locationHint,StackCrawlMark& stackMark,IntPtr pPrivHostBinder, Boolean throwOnFileNotFound,Boolean forIntrospection,Boolean suppressSecurityChecks)
我没有将项目升级到VS2012,我像以前一样从VS2010运行它。我没有对项目本身做任何改动。唯一的变化是我在机器上安装了VS2012(和.NET 4.5)。
可能导致这个意外问题的原因是什么?
答案 0 :(得分:4)
情况比我预期的要复杂一些。该程序集的XMLSerializers DLL似乎对我的解决方案中的身份验证至关重要,只需“按[F]继续运行直到出现真正的问题”并没有导致一些无关的错误。
我无法完全理解底层问题是什么,但似乎在升级Visual Studio后动态创建DLL。
我解决这个问题的方法是运行sgen工具手动创建序列化程序并将标志“Generate Serialization Assemblies”设置为Off。可以通过添加构建后的指令来自动执行该过程。
话虽如此,我不知道为什么这个问题首先出现,因为我确信我没有在VS2012中打开这个项目。