C# 使用VS 2008的SerializationException加载项:找不到assemby

C# 使用VS 2008的SerializationException加载项:找不到assemby,c#,serialization,assemblies,visual-studio-addins,C#,Serialization,Assemblies,Visual Studio Addins,我正在编写一个VisualStudio2008加载项,一切正常,但几天内,有时会出现有关序列化的奇怪错误(找不到程序集) 我的加载项可以编译工作,也可以运行 打开新实例Visual Studio时,单击菜单选项时我的加载项失败 但是,如果开放式解决方案都能起作用(有时很少失败) 代码: 错误: 错误al abrir Mfa en VisorMfa:无法 查找集合 'COMPANY.LifeCycle.Mfa, 版本=2.0.0.0,区域性=中性, PublicKeyToken=9744987c0

我正在编写一个VisualStudio2008加载项,一切正常,但几天内,有时会出现有关序列化的奇怪错误(找不到程序集)

我的加载项可以编译工作,也可以运行

打开新实例Visual Studio时,单击菜单选项时我的加载项失败

但是,如果开放式解决方案都能起作用(有时很少失败)

代码:

错误:

错误al abrir Mfa en VisorMfa:无法 查找集合 'COMPANY.LifeCycle.Mfa, 版本=2.0.0.0,区域性=中性, PublicKeyToken=9744987c0853bf9e'

蒂波: System.Runtime.Serialization.SerializationException

Mensaje:找不到程序集 'COMPANY.LifeCycle.Mfa, 版本=2.0.0.0,区域性=中性, PublicKeyToken=9744987c0853bf9e'

堆栈跟踪:

在 System.Runtime.Serialization.Formatters.Binary.BinarySassemblyInfo.GetAssembly()

在 System.Runtime.Serialization.Formatters.Binary.ObjectReader.GetType(BinarySassemblyInfo assemblyInfo,字符串名称)

在 System.Runtime.Serialization.Formatters.Binary.ObjectMap..ctor(字符串 objectName,字符串[]成员名, BinaryTypeEnum[]BinaryTypeEnum, 对象[]类型信息A,Int32[] 对象阅读器 objectReader,Int32 objectId, 二进制汇编信息汇编信息, 尺寸阵列组件(可组装)

在 System.Runtime.Serialization.Formatters.Binary.ObjectMap.Create(字符串 名称,字符串[]成员名称, BinaryTypeEnum[]BinaryTypeEnum, 对象[]类型信息A,Int32[] 对象阅读器 objectReader,Int32 objectId, 二进制汇编信息汇编信息, 尺寸阵列组件(可组装)

在 System.Runtime.Serialization.Formatters.Binary.\u BinaryParser.ReadObjectWithMapTyped(BinaryObjectWithMapTyped (记录)

在 System.Runtime.Serialization.Formatters.Binary.\u BinaryParser.ReadObjectWithMapTyped(BinaryHeaderEnum 双耳(耳垂)

在 System.Runtime.Serialization.Formatters.Binary.\uuu BinaryParser.Run()

在 System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler 处理程序,\uuuu二进制解析器serParser, 布尔fCheck,布尔 isCrossAppDomain,IMethodCallMessage 方法调用消息)

在 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(流) 序列化流,标题处理程序 处理程序,布尔fCheck,布尔 isCrossAppDomain,IMethodCallMessage 方法调用消息)在 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(流) 序列化(流)

在 COMPANY.VSIntegration.ComunDespliegue.visualizatores.FrmVisorMfaICSharpCode.Deserialize(流 中的序列化(流) E:\TFS\pro\COMPANYTeam\Main\Public\COMPANYDevelopment\COMPANY.VSIntegration.ComunDespliegue\visualizatores\VisorMfa\FrmVisorMfa.cs:line 139

在 COMPANY.VSIntegration.ComunDespliegue.visualizatores.FrmVisorMfaICSharpCode.AbrirFicheroMfa() 在里面 E:\TFS\pro\COMPANYTeam\Main\Public\COMPANYDevelopment\COMPANY.VSIntegration.ComunDespliegue\visualizatores\VisorMfa\FrmVisorMfa.cs:line 131

在 COMPANY.VSIntegration.ComunDespliegue.visualizatores.FrmVisorMfaICSharpCode.FrmICSharpCode\u Load(对象 发件人,事件参数(e)在 E:\TFS\pro\COMPANYTeam\Main\Public\COMPANYDevelopment\COMPANY.VSIntegration.ComunDespliegue\visualizatores\VisorMfa\FrmVisorMfa.cs:line 七十二

有什么建议吗

更新: 一旦出现此错误:

序列化异常:

[A] COMPANY.LifeCycle.Mfa.Mfa容器 不能投靠 [B] COMPANY.LifeCycle.Mfa.Mfa容器

A型起源于 'COMPANY.LifeCycle.Mfa, 版本=2.0.0.0,区域性=中性, 上下文中的PublicKeyToken=null 位置处的“LoadFrom” 'C:\Projects\Addins\Mfa\COMPANY.LifeCycle.Mfa.dll'

B型起源于 'COMPANY.LifeCycle.Mfa, 版本=2.0.0.0,区域性=中性, 上下文中的PublicKeyToken=null 位置处的“loadnote” “C:\Documents and Settings\eprados\Configuración local\Datos de programa\Microsoft\VisualStudio\9.0\ProjectAssemblys\wi3h64z601\COMPANY.LifeCycle.Mfa.dll”

我有一个WinForms应用程序,一切正常。序列化是可以的

对于VS Addin,我有:

Addin.dll引用 ComunDespliegue.dll和 LifeCycle.Mfa.dll

ComunDespliegue.dll引用 LifeCycle.Mfa.dll

对于WinForms应用程序,我有:

UI.Client.dll引用 ComunDespliegue.dll和 LifeCycle.Mfa.dll


程序集与我的加载项一起位于加载项目录中。我正在序列化的类型是可序列化的。COMPANY.LifeCycle.Mfa.dll是相同的。

使用Fuslogvw.exe查找CLR在何处查找程序集。有两个基本原因。首先,您在最近的更新中增加了程序集的[AssemblyVersion],并尝试反序列化与旧版本程序集一起保存的数据


第二个原因是它根本找不到DLL。只有少数几个地方可以存储程序集,以便在VS运行时可以找到它。Visual Studio的Common7\IDE目录的GAC或PrivateAssemblys或PublicAssemblys子目录

程序集与我的加载项一起位于加载项目录中。我正在序列化的类型是可序列化的。COMPANY.LifeCycle.Mfa.dll是相同的。请不要使用Assembly.LoadFile()。
 private void AbrirFicheroMfa()
        {
            using (Stream containerStream = File.OpenRead(this.FicheroMFA))
            {
                mfaContainer = this.Deserialize(containerStream);
                containerStream.Close();
            }
        }

        public MfaContainer Deserialize(Stream serializationStream)
        {
            var formatter = new BinaryFormatter();
            return (MfaContainer)formatter.Deserialize(serializationStream);
        }