C#和Sparx EA互操作lib - 找不到方法

时间:2017-05-23 12:35:38

标签: c# visual-studio runtime enterprise-architect

尝试使用此处描述的方法RepositoryType()编译C#代码 http://sparxsystems.com/enterprise_architect_user_guide/13.0/automation/repository3.html

我收到了这个错误 enter image description here

  

错误CS1061'Repository'不包含'RepositoryType'的定义,也没有扩展方法'RepositoryType'接受类型'Repository'的第一个参数(你是否缺少using指令或汇编引用?)< / p>

我试图清理/重建所有东西,但它无法正常工作。此外,在运行时调用期间看起来很好 - 返回字符串。

有什么用呢?

UPD:

使用和转让

    using System.Collections.Generic;
    using System.IO;
    using System.Reflection;
    using System.Text.RegularExpressions;
    using System.Xml.Linq;
    using EA;
    using MSScriptControl;

    public class SparxEaDocGenScriptRunner
    {
        private MSScriptControl.ScriptControl _msScriptControl;
        private EA.Repository _repository;
        private string _language;
        private string _databaseType;
        private Regex _eaLanguageDeterm;
        private Regex _getExtFromName;
        private IDictionary<string, string> _languageExts;

        /// <summary>
        /// Add-in logger accessor.
        /// </summary>
        private ApplicationLogger _logger;

        public SparxEaDocGenScriptRunner(Repository repository, ApplicationLogger logger)
        {
            _repository = repository;

            _logger = logger;

            var connectionString = _repository.ConnectionString;
            var type = _repository.RepositoryType();
        }

        //...
     }

它从代码的这一部分注入了所有内容,比如Main.cs

public void EA_MenuClick(EA.Repository Repo, string Location, string MenuName, string ItemName)
        {
            switch (ItemName)
            {
                case MENU_DOC_GEN:
                    #region Logging Statement
                    Logger.Write(new LogEntry
                    {
                        Severity = TraceEventType.Information,
                        Message = "Loading Document Generator",
                        Categories = new[] { ApplicationConstants.DocumentGeneratorLogCategory }
                    });
                    #endregion
                    DocumentGenerator docgen = new DocumentGenerator(Repo);
                    docgen.ShowDialog();
                    break;
                case MENU_ABOUT:
                    new AboutBox().Show();
                    break;
            }
        }

UPD2:

我的EA.Interop.dll版本:

enter image description here

1 个答案:

答案 0 :(得分:1)

我写信支持,参考我的问题,得到了我的答案:)这真的很有帮助。我又太粗心了。

  

嗨Danil,

     

感谢您的询问。

     

您可能正在引用旧版本的   EA.Interop.dll文件尚未包含此功能。我们可以   在屏幕截图中看到您正在引用此Interop DLL   在“C:\ Users \ temp1 ...”下的某个地方。

     

请注意,EA.Interop.dll文件的版本号没有   在EA版本之间进行更新,通常看起来更有用   在文件的创建/修改时间戳上。什么是时间戳   在您正在引用的Interop DLL文件和您的   目前的EA安装目录? (默认:C:\ Program Files(x86)\ Sparx   系统\ EA)

     

我建议您更改直接指向的引用   来自当前EA安装的DLL,或复制当前版本   从您的EA安装目录中覆盖您的位置   dll正在引用。

     

致以最诚挚的问候,

     

Aaron Bell

     

Sparx Systems Pty Ltd

     

support@sparxsystems.com

     

http://www.sparxsystems.com

好吧,所以我重新安装了Sparx EA,从安装文件夹中复制了.dll,它确实有效!