我正在編寫一個Visual Studio 2008加載項,所有工作正常,但有幾天,有時,有關於序列化(無法找到大會)奇怪的錯誤。SerializationException使用VS 2008插件:找不到集裝箱
我的插件編譯工作,也是運行時。
當打開新實例Visual Studio時,我的外掛程序在單擊菜單選項時失敗。
但這時如果開放式解決方案的所有作品(少數有時會失敗)
代碼:
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);
}
錯誤:
Error al abrir Mfa en VisorMfa: Unable to find assembly 'COMPANY.LifeCycle.Mfa, Version=2.0.0.0, Culture=neutral, PublicKeyToken=9744987c0853bf9e'.
Tipo: System.Runtime.Serialization.SerializationException
Mensaje: Unable to find assembly 'COMPANY.LifeCycle.Mfa, Version=2.0.0.0, Culture=neutral, PublicKeyToken=9744987c0853bf9e'.
StackTrace:
at System.Runtime.Serialization.Formatters.Binary.BinaryAssemblyInfo.GetAssembly()
at System.Runtime.Serialization.Formatters.Binary.ObjectReader.GetType(BinaryAssemblyInfo assemblyInfo, String name)
at System.Runtime.Serialization.Formatters.Binary.ObjectMap..ctor(String objectName, String[] memberNames, BinaryTypeEnum[] binaryTypeEnumA, Object[] typeInformationA, Int32[] memberAssemIds, ObjectReader objectReader, Int32 objectId, BinaryAssemblyInfo assemblyInfo, SizedArray assemIdToAssemblyTable)
at System.Runtime.Serialization.Formatters.Binary.ObjectMap.Create(String name, String[] memberNames, BinaryTypeEnum[] binaryTypeEnumA, Object[] typeInformationA, Int32[] memberAssemIds, ObjectReader objectReader, Int32 objectId, BinaryAssemblyInfo assemblyInfo, SizedArray assemIdToAssemblyTable)
at System.Runtime.Serialization.Formatters.Binary.__BinaryParser.ReadObjectWithMapTyped(BinaryObjectWithMapTyped record)
at System.Runtime.Serialization.Formatters.Binary.__BinaryParser.ReadObjectWithMapTyped(BinaryHeaderEnum binaryHeaderEnum)
at System.Runtime.Serialization.Formatters.Binary.__BinaryParser.Run()
at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream)
at COMPANY.VSIntegration.ComunDespliegue.Visualizadores.FrmVisorMfaICSharpCode.Deserialize(Stream serializationStream) in E:\TFS\pro\COMPANYTeam\Main\Public\COMPANYDevelopment\COMPANY.VSIntegration.ComunDespliegue\Visualizadores\VisorMfa\FrmVisorMfa.cs:line 139
at COMPANY.VSIntegration.ComunDespliegue.Visualizadores.FrmVisorMfaICSharpCode.AbrirFicheroMfa() in E:\TFS\pro\COMPANYTeam\Main\Public\COMPANYDevelopment\COMPANY.VSIntegration.ComunDespliegue\Visualizadores\VisorMfa\FrmVisorMfa.cs:line 131
at COMPANY.VSIntegration.ComunDespliegue.Visualizadores.FrmVisorMfaICSharpCode.FrmICSharpCode_Load(Object sender, EventArgs e) in E:\TFS\pro\COMPANYTeam\Main\Public\COMPANYDevelopment\COMPANY.VSIntegration.ComunDespliegue\Visualizadores\VisorMfa\FrmVisorMfa.cs:line 72
有什麼建議?
更新: 一旦我得到這個錯誤:
SerializationException:
[A]COMPANY.LifeCycle.Mfa.MfaContainer cannot be cast to [B]COMPANY.LifeCycle.Mfa.MfaContainer.
Type A originates from 'COMPANY.LifeCycle.Mfa, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null' in the context 'LoadFrom' at location 'C:\Projects\Addins\Mfa\COMPANY.LifeCycle.Mfa.dll'.
Type B originates from 'COMPANY.LifeCycle.Mfa, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null' in the context 'LoadNeither' at location 'C:\Documents and Settings\eprados\Configuración local\Datos de programa\Microsoft\VisualStudio\9.0\ProjectAssemblies\wi3h64z601\COMPANY.LifeCycle.Mfa.dll'.
我有一個WinForms應用程序,一切都工作。序列化是好的。
對於VS插件,我有:
Addin.dll references ComunDespliegue.dll and LifeCycle.Mfa.dll
ComunDespliegue.dll references LifeCycle.Mfa.dll
對於WinForms應用程序,我有:
UI.Client.dll references ComunDespliegue.dll and LifeCycle.Mfa.dll
組裝駐留在插件目錄中我的旁邊插件。我正在序列化的類型是可序列化的。 COMPANY.LifeCycle.Mfa.dll是一樣的。
程序集與我的插件一起駐留在插件目錄中。我正在序列化的類型是可序列化的。 COMPANY.LifeCycle.Mfa.dll是一樣的。 – Kiquenet 2011-02-07 14:24:37