2017-05-23 38 views
1

嘗試編譯在此所說明 http://sparxsystems.com/enterprise_architect_user_guide/13.0/automation/repository3.htmlC#和的Sparx EA互操作LIB - 找不到方法

與方法RepositoryType() C#代碼,我得到這個錯誤 enter image description here

錯誤CS1061 '倉庫' 呢不包含'RepositoryType'的定義,並且沒有可以找到接受'Repository'類型的第一個參數的擴展方法'RepositoryType'(您是否缺少使用指令或程序集引用?)

我試圖清理/重建所有東西,但它不工作。此外,在運行時調用看起來不錯 - 返回字符串。

有什麼可以幫忙嗎?

UPD:

Usings和分配

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

+0

你的目標是哪個框架? (如果您的目標客戶端配置文件框架,請嘗試定位非客戶端配置文件) – Mart10

+0

@Hue pardon?你是什​​麼意思?只有一個'EA.Interop.dll'我在那裏用 – DanilGholtsman

+0

右鍵點擊你的項目 - >屬性。目標框架下出現什麼? – Mart10

回答

1

我寫了支持,引用我在這裏的qusetion,並得到了我的答案:)它真的幫助。我又太粗心了。

DANIL嗨,

感謝您的查詢。

您可能引用了舊版本的 EA.Interop.dll文件,該文件尚未包含此功能。我們可以在您的屏幕截圖中看到 ,您在「C:\ Users \ temp1 ...」下面的某個地方引用了此012op的Interop DLL。

請注意,在EA版本之間,EA.Interop.dll文件的版本號不會更新爲 ,因此在文件上創建/修改時間戳時查看 通常更有用。什麼是您正在引用的Interop DLL文件上的時間戳 以及當前EA安裝目錄中的 ? (默認爲:C:\ Program Files文件(x86)的\的Sparx 系統\ EA)

我建議要麼改變你的參照直接從您目前的EA安裝點 的DLL,或者從複製當前版本 您EA安裝目錄並覆蓋您的 dll被引用的位置。

最好的問候,

亞倫貝爾

的Sparx系統有限公司

[email protected]

http://www.sparxsystems.com

嘛,所以我重新安裝的Sparx EA,複製.dll從安裝文件夾,它的工作!

+0

啊我通過我的右邊的「Users/temp ..」路徑 – Mart10

+0

@Hue好,它在我的虛擬機上,用戶名是temp。而且.dll以及它如何包含在那裏(和整個項目)是來自回購,所以 – DanilGholtsman

+0

,但我的猜測是你安裝了EA一段時間,這就是爲什麼DLL過時 – Mart10