2017-05-23 1 views
1

Essayez de compiler du code C# avec la méthode RepositoryType() qui est décrit ici http://sparxsystems.com/enterprise_architect_user_guide/13.0/automation/repository3.htmlC# et Sparx EA Interop lib - méthode introuvable

Et je suis arrivé cette erreur enter image description here

Erreur CS1061 'référentiel' ne ne contient pas de définition pour 'RepositoryType' et aucune méthode d'extension 'RepositoryType' acceptant un premier argument de type 'Repository' n'a été trouvée (manque-t-il une directive using ou une référence d'assembly?)

J'ai essayé de nettoyer/reconstruire toutes les choses, mais cela ne fonctionne pas. De plus, pendant l'exécution, l'appel semble bien - renvoie la chaîne.

Ce qui pourrait aider?

UPD:

usings et rendez-

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(); 
     } 

     //... 
    } 

Et son injecté toute façon de cette partie de code, permet de dire 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:

Ma version EA.Interop.dll:

enter image description here

+0

quel cadre ciblez-vous? (Si vous ciblez un cadre de profil client, essayez de cibler le profil non-client.) – Mart10

+0

@Hue pardon? Que veux-tu dire par là? Il y a seulement un 'EA.Interop.dll' que j'utilise là – DanilGholtsman

+0

faites un clic droit sur votre projet -> propriétés. Qu'est-ce qui apparaît sous le cadre Target? – Mart10

Répondre

1

j'ai écrit à l'appui, référencé sur mon qusetion ici, et a obtenu ma réponse :) Cela m'a vraiment aidé. Et j'étais trop négligent, encore une fois.

Salut Danil,

Nous vous remercions de votre demande.

Il est possible que vous référençiez une version plus ancienne du fichier EA.Interop.dll qui ne contenait pas encore cette fonction. Nous pourrions voir dans votre capture d'écran que vous faites référence à cette DLL Interop de quelque part sous "C: \ Users \ temp1 ...".

S'il vous plaît noter que le numéro de version du fichier EA.Interop.dll ne soient mis à jour entre les versions EA, il est généralement plus utile de regarder à la création/horodatage modifié dans le fichier. Quels sont les horodatages sur le fichier DLL Interop auquel vous faites référence et celui dans votre répertoire d'installation EA actuel ? (Par défaut: C: \ Program Files (x86) \ Sparx Systems \ EA)

Je suggère soit changer votre référence au point directement à la DLL de votre installation actuelle d'EA, ou copier la version actuelle de votre EA install répertoire et remplace l'emplacement de votre dll à partir de.

Meilleures salutations,

Aaron Bell

Sparx Systems Pty Ltd

[email protected]

http://www.sparxsystems.com

Eh bien, donc je Sparx EA réinstallé, copié .dll du dossier d'installation et cela a fonctionné!

+0

Ah le "Users/temp .." chemin passé à côté de moi – Mart10

+0

@Hue bien, c'est sur ma machine virtuelle, donc, le nom d'utilisateur est temp. Et le .dll et comment il a été inclus là (et tout le projet) est de repo, donc – DanilGholtsman

+0

mais je suppose que vous avez eu l'installation de EA pendant un certain temps, ce qui explique pourquoi la DLL était obsolète – Mart10