2008-10-22 4 views
11

작동하지 않습니다, Visual Studio에서 프로젝트 파일이 추가 :이다른 Interop를 참조 내 컴퓨터에 <strong>에 Microsoft.Office.Interop.Excel</strong>을 참조를 추가 할 때

<COMReference Include="Excel"> 
    <Guid>{00020813-0000-0000-C000-000000000046}</Guid> 
    <VersionMajor>1</VersionMajor> 
    <VersionMinor>5</VersionMinor> 
    <Lcid>0</Lcid> 
    <WrapperTool>primary</WrapperTool> 
    <Isolated>False</Isolated> 
</COMReference> 

오류를 얻고 프로젝트 파일에두고 코드 위에 대체 Interop.Excel.dll 불리는 프로젝트에 DLL 파일을 추가 할 필요가 팀의 다른 개발자입니다 :

<Reference Include="Interop.Excel, Version=1.5.0.0, Culture=neutral, processorArchitecture=MSIL"> 
    <SpecificVersion>False</SpecificVersion> 
    <HintPath>My Project\Interop.Excel.dll</HintPath> 
</Reference> 

이 작업을 수행 내 컴퓨터.

두 방법의 차이점을 설명해 주시겠습니까? 그리고 다른 컴퓨터에서 첫 번째 방법을 사용하는 것이 가장 좋은 방법일까요?

답변

0

필자는 Excel 자동화 방법을 사용하여 필자가 인정한 것 이상을 사용했으며, Interop.Excel.dll을 결코 언급하지 않았습니다. 나는 항상 이전을 언급했다. 그는 왜 그것을 참조하고 있으며, 어떤 오류가 발생합니까?

여러분은 동일한 버전의 Excel을 참조합니까 (5.0 절 11.0)? 너희들은 똑같은 버전의 사무실, 서비스 팩 및 모든 것을 가지고 있니? 이것은 차이 일 수 있습니다.

12

접근 방법에 문제가없는 것 같습니다.

일반적으로 VS는 구성 요소에 대한 참조를 추가 할 때 COM 구성 요소에 대한 interop 어셈블리를 자동으로 생성합니다. 그러나 Office 구성 요소 중 하나 (XP 이상 버전)에 대한 참조를 추가하면 첫 번째 예제에서와 같이 Microsoft의 사전 생성 된 (최적화 된) 주 interop 어셈블리에 대한 참조가 추가됩니다. 라인

<WrapperTool>primary</WrapperTool> 

은이 PIA가 사용된다는 것을 의미합니다.

제대로 PIA를 추가 한 경우이 참조의 copylocal의 속성이 false로 설정해야합니다 참조하고 경로 속성은 무엇인가와 같은

C:\WINDOWS\assembly\GAC\Microsoft.Office.Interop.Excel\12.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.Excel.dll 

당신은 Interop 어셈블리에 대한 좀 더 자세한 내용을 찾을 수 있어야한다 이 MSDN article.

작동하는 첫 번째 방법을 얻으려면 PIA (Office Primary Interop Assemblies)가 컴퓨터에 설치되어 있어야합니다. Microsoft에서 제공하는 재배포 버전이 있습니다 :

AFAIK는 만 .NET Framework가 설치되어있는 Office 설치 설치 얻을 이러한 PIA를, 그 이유있다 PIA에 대해 별도의 재배포 가능 파일입니다.

참고 : 대상 Office 버전을 참조해야합니다. 그러나 여러 버전의 Office를 대상으로 할 때 몇 가지 문제가 발생할 수 있습니다. 이 경우 솔루션은 런타임에 바인딩이 될 수 있습니다 (성능에 문제가없는 경우).

+1

PIA에는 생성 된 interop 어셈블리를 사용할 때 발생할 수있는 메모리/리소스 누출을 방지하는 추가 접착제 코드가 있습니다. –

+0

PIA가 생성되고 생성 된 interop이 아닌지 확인하는 방법은 무엇입니까? @David Schmitt의 설명에 언급 된 메모리/리소스 유출을보고 있습니다. –

+0

@ user260197 : PIA가 시스템에 올바르게 설치되어 있어야합니다. 설치를 처리 할 설치 프로그램을 Microsoft에서 얻을 수 있습니다. PIA가 GAC에 있으며 등록 된 것이 특히 중요합니다. 자세한 내용은 http://msdn.microsoft.com/en-us/library/aa679806%28office.11%29.aspx를 참조하십시오. –

0

내가 사용하는 가장 깨끗한 방법을 발견했다. 이것은 interop의 여러 버전을 허용하며, 공유 bin \ Office Interop \ 11 또는 12 \ Microsoft.Office.Interop.Excel.dll \을 만들고이를 다시 참조하는 것입니다. 프로젝트에서 다른 버전에 대한 대우를 수행합니다.

관련 문제