2017-09-05 2 views
1

두 개의 프로젝트가 있습니다. .net 핵심 웹 프로젝트와 .net 4.6.2 클래스 라이브러리. 내 클래스 라이브러리는 com을 통해 외부 소프트웨어 패키지에서 필요한 기능을 마무리합니다.C# 동적 COM 시스템 .__ ComObject

내가 다루는 com 유형은 클래스 라이브러리 참조에 추가했기 때문에 강력한 형식의 인스턴스를 정의 할 수 있습니다.
내 이슈가 시작되는 곳은이 com 라이브러리의 특정 속성과 메소드도 System .__ ComObject를 반환한다는 것입니다. Dynamic을 사용하여 선언 한 이러한 반환 객체이므로 읽기가 정확하면 런타임 바인딩이 속성 및 메서드에 액세스하는 데 사용됩니다.

그러나 내 웹 API에서 클래스 라이브러리를 호출 할 때 속성/메서드가 System._ComObject에 없다는 오류가 나타납니다. 내 클래스 라이브러리 양식에 대한 정확한 호출을 실행할 수 있습니다. .net 4.6.2 데스크톱 응용 프로그램에 아무런 문제가 없습니다.

.net 핵심 프로젝트에서 호출 할 때 클래스 라이브러리가 런타임 바인딩을 수행하지 못하게하는 것이 무엇이 잘못 되었습니까?

닷넷 4.6.2 클래스 간단한까지 스캐 폴딩 컨트롤러이 생각하는 모든

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

웹 응용 프로그램과 라이브러리를 호출 해 보았습니까?) .net 4.6.2 (.net 코어가 아님)? 또한 앱의 비트 수 (x86 vs x64)를 확인 했습니까? 그렇지 않으면 어떤 재생산 코드 –

+0

Ta를 보내 주시면 답장을 보내 드리겠습니다. @Simon Mourier, bitness를 확인하십시오. 모든 것이 정렬됩니다. .net 4.6.2 웹 응용 프로그램으로 테스트 해보십시오. 데스크톱 응용 프로그램만큼 잘 작동합니다. – Hursey

답변

1

감사를

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

을 .NetCore. 꽤 많은 시간을 내가 지금이 시간에 더 이상 시간을 낭비 할 수 없다고 결정했습니다. COM 상호 작용으로 인해 Windows에 꽤 제한되어 있으므로 .net 4.6.2 프레임 워크를 사용하는 것으로 다시 돌아 가기로 결정했습니다.

관련 문제