2012-06-19 7 views
6

먼저 사용해야하는 타사 ActiveX 컨트롤이 있습니다.침입 금지 침입 Interop 경고

다음으로 stdole 라이브러리를 사용하여 해당 타사 컨트롤에 이미지를 제공해야합니다. 나는 기본 설정에서 컴파일 할 때 , 나는 몇 가지 경고를 얻을 :

warning CS1762: A reference was created to embedded interop assembly 'c:\Windows\assembly\GAC\stdole\7.0.3300.0__b03f5f7f11d50a3a\stdole.dll' because of an indirect reference to that assembly created by assembly 'XXX\obj\x86\Release\Interop.ThirdPartyControl.dll'. Consider changing the 'Embed Interop Types' property on either assembly. 
warning CS1762: A reference was created to embedded interop assembly 'c:\Windows\assembly\GAC\stdole\7.0.3300.0__b03f5f7f11d50a3a\stdole.dll' because of an indirect reference to that assembly created by assembly 'XXX\obj\x86\Release\AxInterop.ThirdPartyControl.dll'. Consider changing the 'Embed Interop Types' property on either assembly. 

쉬운만큼, 내가 stdole 참조 false로 그 조언과 설정 삽입 Interop를 유형에 따라 있습니다. 응용 프로그램이 던지고 때 갑자기, 이제 클라이언트 시스템에 갈 때까지 모든 것이 좋아 보인다 : 그래서

Could not load file or assembly 'stdole, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified. 

을, 내가 왜 stdole에 임베드 상호 운용성을 제거 모르겠어요하지만 (즉, 원하지하지 추측이있다 도서관을 unfindable하게 만드는 효과).

글쎄, 다른 방법으로 Embed Interop를 사용하여 모든 것을 표시해 보자. 컴파일 오류 :

Error 2 Cannot embed interop types from assembly 'XXX\obj\x86\Release\AxInterop.ThirdPartyControl.dll' because it is missing either the 'ImportedFromTypeLibAttribute' attribute or the 'PrimaryInteropAssemblyAttribute' attribute XXX\obj\x86\Release\AxInterop.ThirdPartyControl.dll XXX 
Error 1 Cannot embed interop types from assembly 'XXX\obj\x86\Release\AxInterop.ThirdPartyControl.dll' because it is missing the 'GuidAttribute' attribute XXX\obj\x86\Release\AxInterop.ThirdPartyControl.dll XXX 

따라서 경고를 없애고 작성하고 실행할 수있는 방법에 대한 조언이 필요합니까?

UPDATE는

한스 옆모습는 주석으로 참으로 문제를 해결할 않는 대답을 기록했다. 그가 대답으로 그것을 reposts한다면 나는 그것을 받아 들일 것이다. 불행히도 로컬 복사 설정되어있는 DLL을 프로젝트의 릴리스 폴더에 멋지게 복사하지만 솔루션의 최종 릴리스 폴더 (별도 실행 파일)로 이동하지 않는 표준 문제도 있습니다. 지금은 실행 파일에 stdole에 대한 참조를 추가하여 해결했습니다. 아마도 그 정도면 충분할 것 같습니다.

+3

ActiveX 구성 요소의 형식을 포함 할 수 없습니다. 대상 컴퓨터에 PIA가 없어져서 로컬 복사 속성을 true로 설정하고 생성 된 stdole.dll도 복사 해보십시오. –

+0

Hans Passant again! 너는 어디 에나있어, 나는 심지어 이전에 무관 한 일로 너를 가로 질렀다. Jon Skeet이 모든 언론을 얻는 이유를 모르겠다. 나는 그것을 시험해보고 다시보고 할 것이다. – user12861

+0

@HansPassant 질문 업데이트보기 – user12861

답변

3

의해 답변을 Hans Passant :

ActiveX 구성 요소에 대한 형식을 포함 할 수 없습니다. 대상 컴퓨터에 PIA가 없어져서 로컬 복사 속성을 true로 설정하고 생성 된 stdole.dll도 복사 해보십시오.

-2

VS10에서 새 프로젝트를 만들면 기본적으로 .NET Framework 4 클라이언트 프로필을 사용할 수 있습니다. 프로젝트 속성 -> 응용 프로그램 탭 페이지에서 대상 프레임 워크를 .NET Framework 4로 설정할 수 있습니다.

관련 문제