我正在使用AMO in c#构建SSAS多维数据集。为此,我希望获得Server、Cube、Dimension等类的公共属性列表。这将是我的超集,用户必须从其中提供强制属性,也可以提供可选属性。
我正在尝试生成XSD模式。我运行了以下命令
XSD C:\windows\assembly\GAC_MSIL\Microsoft.AnalysisServices\10.0.0.0__89845dcd8080cc91\Microsoft.AnalysisServices.DLL /dataset /element:Cube /out:c:\temp\gac
并得到了这个错误
Error: There was an error processing 'C:\windows\assembly\GAC_MSIL\Microsoft.AnalysisServices\10.0.0.0__89845dcd8080cc91\Microsoft.AnalysisServices.DLL'.
- There was an error reflecting type 'Microsoft.AnalysisServices.ModelComponent'.
- Cannot serialize member 'System.ComponentModel.Component.Site' of type 'System.ComponentModel.ISite', see inner exception for more details.
- Cannot serialize member System.ComponentModel.Component.Site of type System.ComponentModel.ISite because it is an interface.我该怎么做才能正确地生成模式?
发布于 2014-07-18 01:37:24
解决方案是指示XSD.exe跳过对有问题的成员的序列化(在本例中为‘System.ComponentModel.Component.Site’)。为此,在产生问题的类成员之前添加以下属性:
[System.Xml.Serialization.XmlIgnore]发布于 2010-02-16 01:35:22
当我读到这个问题时,有几件事我想知道:
时才有用
然后,问题出现的原因是这个库包含类型,这些类型具有带有接口类型的公共字段/属性(在本例中为ISite)。
XmlSerializer无法序列化接口,它需要具体的类型。因此,你得到了失败。
目标很明确,但我担心您将无法使用XSD.exe工具。由于您所需的一个对象(多维数据集)具有类型为ISite的公共属性,因此这将始终破坏XMLSerializer。
我猜你最好的选择是AnalysisServices SDK (也许他们给你提供了这个对象模型)或者...(讨厌)在你想要生成的类型上使用反射,而属性字段的子集忽略了任何接口类型。
希望这能帮上忙
https://stackoverflow.com/questions/2185165
复制相似问题