2011-02-10 65 views
2

我们在VB.Net 3.5中编写了一个VSTO加载项,并在MS Word 2010中运行。在此VSTO加载项中,我们设置了许多SharePoint(2010)Meta从文档ContentTypeProperties集合返回的属性。为查找类型设置MetaProperty会导致MS Word崩溃

当我们设置一个类型为msoMetaPropertyTypeLookup的元数据项的Value属性时,有时(相当有规律但并非全部)它会导致Word崩溃。很明显,价值的设置是一个尝试,但是没有任何例外 - 它只是死掉了。有关Word错误的详细信息在下方,但我怀疑它对任何人都没有多大用处。对于文本类型的字段,在设置其值时没有问题。

如果有人能够指引我们朝正确的方向始终能够以不会杀死单词的方式设置查找元数据属性的值,将会非常感激!

另外,我们有一个元数据属性,这也是一个查找类型,而只是访问任何的它的属性(如值,名称,类型)导致了以下异常 “找不到元素。(异常来自HRESULT:0x80070490) “

似乎不会导致此异常的唯一属性是Id属性。我能看到的唯一区别是该字段的名称中有一个正斜杠(“/”)。字段名称中的“/”是否无效?

默认DIP可以设置所有值没有问题。只是当我们尝试并在代码中执行时,我们遇到了问题。

Problem signature: 
    Problem Event Name: APPCRASH 
    Application Name: WINWORD.EXE 
    Application Version: 14.0.5123.5000 
    Application Timestamp: 4c646b38 
    Fault Module Name: StackHash_6608 
    Fault Module Version: 6.1.7600.16695 
    Fault Module Timestamp: 4cc7ab44 
    Exception Code: c0000374 
    Exception Offset: 000c35e3 
    OS Version: 6.1.7600.2.0.0.256.48 
    Locale ID: 5129 
    Additional Information 1: 6608 
    Additional Information 2: 66081020834161d0adf96c6191f1a84c 
    Additional Information 3: fdd5 
    Additional Information 4: fdd5bad4f069a755d9154e340782caad 

回答

0

我在VBA中尝试过,并且遇到了相同的错误,只是从Sharepoint托管文档中枚举属性。

子GetDocProps() ' ' GetDocProps宏 ' '

昏暗我只要 昏暗丙作为Office.MetaProperty 昏暗道具作为Office.MetaProperties

集道具= ActiveDocument.ContentTypeProperties I = 1 对于每个支柱在道具 'Debug.Print我&”类型: “& prop.Type &” ID: “& prop.ID &”Name:“& prop.Name &”Value:“& prop.Value Debug.Print i &”。“ & “ID:” & prop.ID & “名称:” & prop.Name I = I + 1 下一页丙 结束子

它坠毁在第九属性携带ID Intern_x002f_extern和具有列名“内部ot外部创建“ 也存在一个名称为”Afzender/Geadresseerde“的列

这是一个网站集合,由一些外部顾问构建。 所以我认为这些顾问没有按照规则使用列名中的非法字符。

打破这些规则给出了各种令人讨厌的副作用。

因此,请小心在SharePoint中使用错误的列名和非字母数字名称。 你最终会用自己的脚射击自己。

问候

马塞尔

2

我有同样的问题,我在ContentTypeProperties的 XML Schema的发现,对于域的内部名称在结束了0,就像CustomSiteColumnName0不过的名字领域没有。这是因为内容类型有一个自定义父内容类型,也有一些网站列,但这些列在SchemaXml中的内部名称很好。

因此,在删除父内容类型的列后,幸运的是我根本没有使用它们,所有内容都基于自定义内容类型在新文档中正常工作。