J'écris un complément Visual Studio 2008 et tout fonctionnait bien, mais quelques jours, parfois, il y a des erreurs étranges à propos de la sérialisation (impossible de trouver l'assembly). Mes addins compilent le travail et le runtime aussi.SerializationException utilisant VS 2008 Addin: ne trouve pas assemby
Lorsque vous ouvrez une nouvelle instance Visual Studio, mon addin échoue lorsque vous cliquez sur l'option de menu.
mais si la solution ouverte tous les travaux (quelques échoue parfois)
Code:
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);
}
erreur:
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
des suggestions?
mise à jour: une fois que je reçois cette erreur:
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'.
J'ai une application WinForms et tout est travail. La sérialisation est ok.
Pour VS Addin, je:
Addin.dll references ComunDespliegue.dll and LifeCycle.Mfa.dll
ComunDespliegue.dll references LifeCycle.Mfa.dll
Pour l'application WinForms, j'ai:
UI.Client.dll references ComunDespliegue.dll and LifeCycle.Mfa.dll
L'ensemble situé dans le répertoire de Addin aux côtés de mon Addin. le type que je suis sérialisable est sérialisable. Le COMPANY.LifeCycle.Mfa.dll est le même.
L'assembly réside dans le répertoire addin à côté de mon addin. le type que je suis sérialisable est sérialisable. Le COMPANY.LifeCycle.Mfa.dll est le même. – Kiquenet
N'utilisez jamais Assembly.LoadFile(). –