我写了一个dll,它有几个类。其中一个叫做DataDesign。
[Serilizible]
public class DataDesign
{
[NonSerialized]
HorizantalFields _horizantalFields;
[NonSerialized]
VerticalFields _verticalFields;
[NonSerialized]
GeneralDataDesignViewType _dataDesignView;
[NonSerialized]
Dictionary<FieldTemplateType, string> _templateTable;
[NonSerialized]
public List<string> ProcessedData;
List<IField> _fields;
}当我在我的应用程序中使用这个dll时,我在正确的处理过程中遇到了问题。塞里林最终取得了成功。但在反序列化方面,我有一个例外。
例外是
“找不到程序集'AnalyzingData,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null‘。”
AnalyzingData是dll的名称。
DeSerilizeClass()
{
BinaryFormatter bin = new BinaryFormatter();
dataDesign=new DataDesign();
DataDesign dd= (DataDesign)bin.Deserialize(stream);
}
Serilize()
{
using (FileStream sr = new FileStream(String.Format(@"{0}\{1}", Parameters.SavedConfigurationsDirectory, dataDesignName),FileMode.CreateNew, FileAccess.Write))
{
BinaryFormatter bin = new BinaryFormatter();
bin.Serialize(sr, this);
}
}//此数据设计类
我怎么能解决这个问题?
MS视觉Studio2010。Windows 7感谢您的关注!
发布于 2012-10-08 07:46:10
不管是什么进程,反序列化都需要访问您的AnalyzingData Dll,也就是说,它需要位于应用程序的bin文件夹中或它可以从其中加载的其他位置。
发布于 2012-10-08 07:46:23
BinaryFormatter序列化图形中的具体对象。即使您将某些内容公开为IField,BinaryFormatter也只查看实际的SomeTypeOfField : IField实例。这意味着要反序列化此数据,您需要序列化数据时正在使用的程序集。听起来,当您序列化时,它从AnalyzingData程序集中获得了一些类型(在图中)。这意味着要反序列化此数据,您将再次需要该程序集。
有一些使用Binder的复杂方法,但在大多数情况下,我建议选择一个映射到您的场景的序列化程序:如果您想反序列化而不使用相同的原始类型/程序集,那么您应该使用基于合同的序列化程序。
或者,只需查找AnalyzingData.dll,并添加对其的引用,以便将其与应用程序一起部署(也将副本本地设置为true )。
https://stackoverflow.com/questions/12777289
复制相似问题