[C#] Visual Studio에서 Embed Interop Types true 및 false 설정의 차이점은 무엇입니까?

Visual Studio에서 프로젝트에 하나의 참조를 추가 할 때 속성 창에 옵션 Embed Inteop Types이 있습니다. True또는로 설정해야 False합니까? 차이점이 뭐야?

많은 프로젝트가 있기 때문에 그중 일부는 참조가로 설정되고 False다른 프로젝트는로 설정되어 True완전히 엉망입니다. 그리고 bulid 서버에도 동일한 경고가 있습니다.

“내장 된 interop 어셈블리에 대한 참조가 생성됨”은 무엇을 의미합니까?

우리 모두 변경할 계획 그래서 Embed Inteop TypesFalse, 우리는 어떤 위험을 얻을 것?



답변

이 옵션은 interop을 위해 매우 큰 PIA (기본 Interop 어셈블리)를 배포 할 필요를 없애기 위해 도입되었습니다.

관리되지 않는 어셈블리와 통신 할 수 있도록 사용되는 관리 브리징 코드를 포함하기 만하면되지만 모든 것을 포함하는 대신 실제로 코드에서 사용하는 내용 만 생성합니다.

Scott Hanselman의 블로그 게시물에서 이에 대한 자세한 내용과 기타 VS 개선 사항을 여기에서 확인하십시오 .

권장 여부는이 기능을 사용할 필요가 없기 때문에 확실하지 않습니다. 빠른 웹 검색은 몇 가지 리드를 생성합니다.

이들을 모두 거짓으로 전환 할 수있는 유일한 위험은 PIA 파일에 대한 배포 문제와 해당 파일 중 일부가 큰 경우 더 큰 배포입니다.


답변

false로 설정하면 디버거를 사용하여 항목의 값을 볼 수 있습니다. true로 설정했을 때 오류가 발생했습니다. 개체로 캐스팅하거나 ‘Embed Interop Types’속성을 true로 변경하는 것이 좋습니다.


답변