문제

Visual Studio의 Com Interop Office에 대한 참조를 추가하는 기술은 다음과 같습니다.

  1. 참조
  2. 참조를 추가하십시오
  3. 선택하십시오 com
  4. 고르다 Microsoft Office 11.0 객체 라이브러리

마술처럼 명명 된 참조가 나타납니다.

Microsoft.Office.Core

그만큼 Project.csproj 파일은 참조의 세부 사항을 보여줍니다.

<COMReference Include="Microsoft.Office.Core">
   <Guid>{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}</Guid>
   <VersionMajor>2</VersionMajor>
   <VersionMinor>3</VersionMinor>
   <Lcid>0</Lcid>
   <WrapperTool>primary</WrapperTool>
   <Isolated>False</Isolated>
</COMReference>

그리고 프로젝트는 소스 컨트롤에 체크되어 있으며 모든 것이 좋습니다.


그런 다음 개발자 사무실 2007 소스 컨트롤에서 프로젝트를 가져오고 그러한 참조가 존재하지 않기 때문에 구축 할 수 없습니다.

그는 (예 : Me) .csproj 파일을 확인하고 참조를 삭제합니다.

Microsoft Office 11.0 Object Library

COM 참조를 다시 설명합니다

Microsoft Office 12.0 Object Library

마술처럼 지명 된 참조가 나타납니다.

Microsoft.Office.Core

그만큼 Project.csproj 파일은 참조의 세부 사항을 보여줍니다.

<COMReference Include="Microsoft.Office.Core">
  <Guid>{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}</Guid>
  <VersionMajor>2</VersionMajor>
  <VersionMinor>4</VersionMinor>
  <Lcid>0</Lcid>
  <WrapperTool>primary</WrapperTool>
  <Isolated>False</Isolated>
</COMReference>

그리고 프로젝트는 소스 컨트롤에 체크되어 있으며 모든 것이 좋습니다.


그런 다음 개발자 사무실 2003 소스 컨트롤에서 프로젝트를 가져오고 그러한 참조가 존재하지 않기 때문에 구축 할 수 없습니다.

그는 (예를 들어) .csproj 파일을 확인하고, 참조를 삭제합니다.

Microsoft Office 12.0 Object Library

COM 참조를 다시 설명합니다

Microsoft Office 11.0 Object Library

마술처럼 지명 된 참조가 나타납니다.

Microsoft.Office.Core

그만큼 Project.csproj 파일은 참조의 세부 사항을 보여줍니다.

<COMReference Include="Microsoft.Office.Core">
  <Guid>{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}</Guid>
  <VersionMajor>2</VersionMajor>
  <VersionMinor>3</VersionMinor>
  <Lcid>0</Lcid>
  <WrapperTool>primary</WrapperTool>
  <Isolated>False</Isolated>
</COMReference>

그리고 프로젝트는 소스 컨트롤에 체크되어 있으며 모든 것이 좋습니다.

그런 다음 프로젝트가 구축되어 눌려집니다 CDS, 가지고있는 고객에게 보냈습니다 사무실 2007.

그리고 모든 것이 좋지 않습니다.


옛날 (예 : .net dll hell 이전)에, 우리는 버전의 독립적 인 progid, 즉:

"Excel.Application"

a로 해결됩니다 clsid 설치된 사무실의 예를 들어

{00024500-0000-0000-C000-000000000046}    

그 중 클래스는 com to com (language-netural pseudo-code)을 사용하여 구성됩니다.

public IUnknown CreateOleObject(string className)
{
    IUnknown unk;

    Clsid classID = ProgIDToClassID(className);
    CoCreateInstance(classID, null, 
          CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER, 
          IUnknown, out unk);

    return unk;
}

질문

1) 설치된 사무실 응용 프로그램을 자동화하기위한 승인 된 기술은 무엇입니까?

2) 무엇입니까 Office 2003 1 차 인터 로프 어셈블리 에 유용한?

3) Office 2003 Primary Interop 어셈블리를 사용하는 경우 Office 2003을 설치해야합니까?

4) 사무실 2003 1 차 인터 로프 어셈블리와 함께 건설하면 고객이 사무실 20003에 영원히 연결되어 있습니까?

5) 사무실 2007 1 차 인터 로프 어셈블리?

6) Office 2007 기본 인터 로프 어셈블리를 설치하면 Office 2007을 설치해야합니까?

7) Excel, Word 또는 Outlook을 구동하기 위해 Standard Com Interop을 사용하는 데 무엇이 잘못 되었습니까? 예 :

[ComImport]
[Guid("00024500-0000-0000-C000-000000000046")]
public class Excel
{
}

8) 한 사람이 추가 할 때 달성하는 것은 무엇입니까?

  • 참조 에있는 항목에 com 탭,
  • comimport]를 사용하는 것과는 반대로,
  • 사용과 반대로 Office 2007 1 차 인터 로프 어셈블리?

9)을 사용하여 참조를 추가하고 있습니다 com 탭 사용과 동일합니다 com interop, 그것이 필요하다는 것을 제외하고 입력 라이브러리 당신이 그것을보기 전에?

10) Office 2003 1 차 인터 로프 어셈블리는 뒤로 및 전달과 호환됩니다. - Office 14- Office 2007- 사무실 2003- 사무실 XP- 사무실 97- 사무실 95

고객과 개발자가 새 버전의 사무실을 설치하는 경우 여전히 작동합니까?

11) 우리는 신청서와 함께 Office 2003 Primary Interop 어셈블리를 배송해야합니까?

12) 고객이 응용 프로그램을 사용하기 전에 Office 2003 기본 인터 로프 어셈블리를 설치해야합니까?

13) 고객이 Office 2003 기본 인터 로프 어셈블리를 설치하는 경우 사무실 설치 되었습니까?

14) 고객이 Office 2003 Primary Interop Assemblies를 설치하는 경우 사무실이 있어야합니다. 2003 설치 되었습니까?

15) Office 2003 Primary Interop이 Free, Lite, 재분배 가능한 버전의 Office 2003을 조립합니까?

16) 개발 기계가 Office 2007이있는 경우 Office 2003 PIAS를 사용할 수 있고 Office XP가 설치된 고객에게 배송 할 수 있습니까?

도움이 되었습니까?

해결책 2

대답은 인터 로프를 위해 얻을 수있는 어셈블리 DLL을 "로컬 복사"하는 것입니다. 출력 폴더에 어셈블리 DLL이 있으면 참조를 추가하고 소스 컨트롤에 확인하십시오.

이제 모든 사람은 참조 된 어셈블리 DLL을 가지고 있습니다.

다른 팁

와우 많은 질문입니다. 일반적으로 앱이 Pias를 사용하는 경우 대상 고객에게 일부 버전의 사무실이 설치되어 있다고 가정합니다. 대상 사용자가 사무실을 설치할 때 PIAS는 GAC에 설치됩니다. 사무실이 설치되어 있지 않으면 왜 사무실을 타겟팅하고 있습니까?

예, 사무실 DLL은 사무실을 자동화하는 올바른 방법입니다. 어셈블리 목록이 있습니다 여기, Office 2007을위한 일부를 포함합니다.

VSTO (Office 용 Visual Studio Tools)를 사용하십니까?

http://msdn.microsoft.com/en-us/office/aa905533.aspx

오래된 실, 아마도 대부분의 사람들은 copylocal = true에 만족할 것입니다. 그러나 여기에 또 다른 방법이 있습니다. 둘 다 (또는 더 이상 ..? 사고 사무실 2010 문제가 여전히 존재하는 경우) 프로젝트 파일의 참조를 말하고 MSBuild에 "MSB3284"경고 (라이브러리를 찾을 수 없음)를 무시하도록 무시하거나 알려주십시오. 따라서 .csproj 파일에 포함하십시오.

<COMReference Include="Microsoft.Office.Core">
   <Guid>{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}</Guid>
   <VersionMajor>2</VersionMajor>
   <VersionMinor>3</VersionMinor>
   <Lcid>0</Lcid>
   <WrapperTool>primary</WrapperTool>
   <Isolated>False</Isolated>
</COMReference>

다음과 같은

<COMReference Include="Microsoft.Office.Core">
   <Guid>{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}</Guid>
   <VersionMajor>2</VersionMajor>
   <VersionMinor>4</VersionMinor>
   <Lcid>0</Lcid>
   <WrapperTool>primary</WrapperTool>
   <Isolated>False</Isolated>
</COMReference>

Microsoft가이를 위해 Nuget 라이브러리를 제공하는지 알고 싶습니다. 사람들이 이러한 답변을 위해 웹을 검색 할 필요성을 제거 할 것이라고 생각합니다. 이것이 Microsoft Office의 라이센스에 위배 될 것이라고 생각합니다.

COPY LOCAL이 포함 된 BTW 실수 로이 라이브러리를 재분배하지 않도록주의해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top