J'ai une solution C# avec une DLL référencée (aussi C# avec la même version .Net). Quand je construis la solution et exécute l'exe résultant, sans fusionner l'exe et la DLL référencée, tout fonctionne bien.BinaryFormatter.Deserialize "impossible de trouver l'assembly" après ILMerge
Maintenant, je veux les fusionner en un exe. Je lance ILMerge et tout semble fonctionner correctement. J'essaie d'exécuter l'exe et il semble fonctionner correctement jusqu'à ce qu'il essaie de désérialiser un objet défini dans la DLL référencée.
using (Stream fstream = new FileStream(file_path, FileMode.Open))
{
BinaryFormatter bf = new BinaryFormatter();
return bf.Deserialize(fstream) as ControlledRuleCollection;
// throws unable to find assembly exception
}
Y at-il peut-être une option ILMerge qui me manque ici?
a fait l'objet sérialisé des ensembles pré-fusion ou d'ensembles post-fusion? –
Je déteste le dire, mais encore une autre raison, je tente toujours de décourager les gens d'utiliser BinaryFormatter. Ce couplage trop proche des métadonnées de type provoque de grandes quantités de douleur. Je peux recommander de meilleures options si vous êtes intéressé à éviter cela (et les nombreux autres scénarios de douleur) à l'avenir. –
Vous savez que la sérialisation binaire n'est pas destinée à être un format de stockage, n'est-ce pas? Il est uniquement destiné à être un format de transport temporaire, il y a trop de limites au stockage à long terme des objets lorsqu'il est effectué via le sérialiseur binaire. Mettez à jour votre programme et remplacez les anciens fichiers. –