2017-09-05 2 views
1

J'ai deux projets. Un projet web .net core et une bibliothèque de classes .net 4.6.2. Ma bibliothèque de classes complète les fonctionnalités requises à partir d'un progiciel externe via com.C# Système COM dynamique .__ ComObjet

Le type de com que j'ai affaire, j'ai ajouté aux références de la bibliothèque de classes afin que je puisse définir des instances fortement typées, cela fonctionne très bien.
Lorsque mon problème commence, certaines propriétés et méthodes de cette bibliothèque com renvoient également un System .__ ComObject. Ces objets retournés ont été déclarés à l'aide de Dynamic, donc si ma lecture est correcte, cela signifie que la liaison au moment de l'exécution est utilisée pour accéder aux propriétés et aux méthodes.

Cependant, lorsque j'appelle ma bibliothèque de classes à partir de mon API Web, j'obtiens des erreurs me disant que les propriétés/méthodes n'existent pas sur System._ComObject. Je peux exécuter les quelques appels exacts à ma forme de bibliothèque de classe .NET 4.6.2 application de bureau pas de problèmes. Qu'est-ce que je fais de mal qui empêche ma bibliothèque de classes d'être capable de faire la liaison à l'exécution lorsqu'elle est appelée à partir d'un projet de base .net?

.NetCore simple contrôleur échafaudés jusqu'à

// GET: api/Job 
    [HttpGet] 
    public IActionResult Get() 
    { 
     try 
     { 
      //Call to static method Class Library 
      return new ObjectResult(Job.GetJobList(); 
     } 
      catch (Exception ex) 
     { 
      return BadRequest(ex); 
     } 
    } 

.Net 4.6.2 Classe

public static List<Job> GetJobList() 
    { 
     List<Job> retVal = new List<Job>(); 
     //Create Accounts instance - external software package 
     Accounts accounts = new Accounts() 
     accounts.Login(); 

     dynamic accountsSettings = accounts.GetSettings(); 
     //accountSettings Type = System.__ComObject 

     String systemPath = accountsSettings.SystemPath; 
     //Exception here: System.__ComObject does not contain definition for 'SystemPath' 

     //Other code here to build list of jobs 
     return retVal; 
    } 
+0

Avez-vous essayé d'appeler votre bibliothèque avec une application web (pas une application de bureau)) avec .net 4.6.2 (pas .net core)? avez-vous également vérifié le bitness (x86 vs x64) des applications? sinon pourriez-vous poster un code de reproduction –

+0

Ta pour répondre @Simon Mourier, avoir vérifié bitness. Tout est aligné. J'ai testé avec une application web .net 4.6.2. Fonctionne bien selon l'application de bureau. – Hursey

Répondre

1

Merci pour tout ce que la pensée à ce sujet. Assez décidé que je ne peux pas perdre plus de temps sur ce point maintenant. Comme je suis limité à Windows de toute façon à cause des interactions COM, j'ai décidé de revenir à l'utilisation du framework .net 4.6.2