0

根据文档,我有一个 VSIX 和一个关联的 MEF DLL,它使用 IModelConversionExtension 类,还有一个 pkgdef 文件将 .foo 设置为调用 EF 设计器的扩展名。

[PartCreationPolicy(CreationPolicy.Shared)]
[Export(typeof(IModelConversionExtension))]
[ModelFileExtension(".foo")]
public class MyConversionCallback : IModelConversionExtension
{
    public void OnAfterFileLoaded(ModelConversionExtensionContext context)
    {
        //How does this get called?
        return;
    }

    public void OnBeforeFileSaved(ModelConversionExtensionContext context)
    {
        //How does this get called?
        return;
    }
}

[$RootKey$\Editors\{c99aea30-8e36-4515-b76f-496f5a48a6aa}\Extensions]
"foo"=dword:00000032
[$RootKey$\Projects]
[$RootKey$\Projects\{F184B08F-C81C-45F6-A57F-5ABD9991F28F}]
[$RootKey$\Projects\{F184B08F-C81C-45F6-A57F-5ABD9991F28F}\RelatedFiles]
[$RootKey$\Projects\{F184B08F-C81C-45F6-A57F-5ABD9991F28F}\RelatedFiles\.foo]
".diagram"=dword:00000002
[$RootKey$\Projects]
[$RootKey$\Projects\{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}]
[$RootKey$\Projects\{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\RelatedFiles]
[$RootKey$\Projects\{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\RelatedFiles\.foo]
".diagram"=dword:00000002

我可以让类似的 Transform 和 Generation MEF 类都能正常工作。而且我的 Model1.foo 确实调用了 EF 设计器,但是 1. OnAfterFileLoaded 和 OnBeforeFileSaved 永远不会触发,并且 2. 当我尝试保存 Model1.foo 时收到一条错误消息,它说在错误列表中看到错误但没有.

什么没有让这个工作。谢谢

4

1 回答 1

0

OnAfterFileLoadededmx如果您加载扩展名不同的文件并且IEntityDesignerConversionData.FileExtension返回与您的扩展名匹配的值,则应该调用它。OnBeforeFileSaved以相反的方式工作 - 在保存时。但是 - 我今天查看了这方面的代码并得出结论,它实际上无法工作。我为此提交了一个工作项:https ://entityframework.codeplex.com/workitem/1371

于 2013-07-09T19:11:08.447 回答