2013-06-14 2 views
0

이 응용 프로그램을 작성하기 전에 C#을 사용 해본 적이 없으므로 Visual Studio가 좋지 않습니다.C# com reference publish crash

나는 직장에서 수많은 고통스러운 프로세스를 자동화하는 멋진 작은 유틸리티를 만들었습니다. 나는 해외 사람들을 포함하여 많은 사람들에게 그것을 보여주었습니다.

유일한 문제는 ... 내 컴퓨터 외에 다른 컴퓨터에서 실행되도록 응용 프로그램을 가져올 수 없습니다. 다른 시스템에서는 응용 프로그램이 시작될 때 즉시 충돌합니다.

필자는 필요한 경우 .NET의 올바른 버전을 설치하는 설치 프로그램에 응용 프로그램을 압축하여 클라이언트 컴퓨터에서 .NET 설치와 관련된 모든 문제를 제외 시켰습니다.

현재로서는 내 두 COM 참조가 잘못 포장되어 있거나 응용 프로그램이 보안 예외로 인해 죽어 가고 있습니다.

응용 프로그램은 COM Excel 참조뿐만 아니라 내 컴퓨터에서 실행중인 클라이언트가 컴퓨터에 설치 한 다른 COM 참조를 사용합니다. 나는 Visual Studio에 의존하는 응용 프로그램을 배포하여 마법을 작업하고 필요한 참조를 끌어오고 "CopyLocal"에 대한 참조를 강제 적용하려고 시도했습니다. 참조를 분리하는 데 실패했으나 필요한지 아닌지 확실하지 않습니다.

누구에게 문제가 될 수 있는지에 대한 단서가 있습니까? 주저하지 마시고 아무것도 명확히 해달라고 부탁드립니다.

+0

충돌에 대한 추가 세부 정보가 도움이됩니다. 오류 메시지가 있습니까? 충돌 대화 상자의 세부 사항은 어떻습니까? – vcsjones

+0

크래시에 실제 오류 메시지가 없습니다. 단순히 "응용 프로그램이 작동을 멈췄습니다"메시지 상자. 실제 세부 사항이 없으므로 :/ – puffnsting

+0

프로그램에서 조금 더 많은 작업을해야하므로 진단없이 충돌을 일으키지 않습니다. AppDomain.CurrentDomain.UnhandledException 이벤트에 대한 이벤트 처리기를 작성하고 e.UnhandledException.ToString() 값을 표시하거나 로깅하십시오. 그것은 그것이 추락 한 이유를 알려줍니다. –

답변

0

일부 배포 문제가 있습니다. 대상 컴퓨터에서 어셈블리 및 사용 된 dll을 복사하는 것이 일반적으로 .NET에서 꽤 잘 작동하는 경우에도 실제로 그렇게 단순하지는 않습니다. 모든 첫째 :

  • nsure 대상 기계는 적절한 COM 개체를 확인 당신이 당신의 프로그램에 사용 하나 (예 : greather거나 같음)

  • 과 호환되는 버전으로 설치되는 .NET 프레임 워크를 존재하고 대상 기계에 등록되어 있습니다. 그리고 이것은 까다로운 부분입니다. Excel을 사용하고 있으므로 대상 컴퓨터에 Primary interop assemblies (PIA) for office을 설치하십시오. 아마도이 문제가 해결 될 것입니다.

+0

대상 컴퓨터에 올바른 .NET Framework가 이미 설치되어 있는지 확인했습니다. VS를 사용하면 수표를 추가하고 필요한 경우 쉽게 설치할 수 있습니다. 지금 PIA 협의회를 살펴보고 있습니다. – puffnsting

+0

링크 된 기사를 읽은 후에 ... 이미 Interop 어셈블리를 사용하고 있습니다. 이미 지정된 방법으로 참조를 추가했으며 내 코드에서 "Microsoft.Office.Interop.Excel;"을 사용하여 라인을 추가했습니다. – puffnsting

+0

대상 컴퓨터에도 interop 어셈블리를 설치 했습니까? 내가 corectly 기억한다면 재배포 가능해야한다. –