5

모든 출력에 공유 참조 된 어셈블리를 운반하지 내가 종속성 문제가 발생할 : 내 솔루션에서VS 2010 설치 프로젝트는 제가 C#을 솔루션에 대한 설치 프로젝트를 설정하고

을, 나는 4 개 독립적 인 프로젝트 출력이 - 하나의 창 서비스 및 세 개의 실행 파일을 포함하며, 이들 모두는 그들 사이에 일부 참조를 공유합니다.

솔루션을 작동 시키려면 설치 프로그램에서 네 가지를 모두 설치해야합니다.

"대상 시스템의 파일 시스템"대화 상자의 "응용 프로그램 폴더"아래에 각 프로젝트 출력에 대한 설치 폴더를 설정하고 해당 폴더에 Windows 서비스의 프로젝트 출력을 성공적으로 추가했습니다. 그러나 실행 파일의 프로젝트 출력물을 계속 폴더에 추가하려고하면 이미 Windows 서비스 폴더에 들어있는 어셈블리가 실행 가능 폴더로 옮겨지지 않고 설치 후 실행 파일은 의존성이 누락되어 실행되지 않습니다.

누락 된 어셈블리를 실행 파일의 폴더에 수동으로 추가 할 수 있지만 이것이 수행되어야하는 방법이 아니며 누락 된 부분이있는 것 같습니다.

아이디어가 있으십니까?

답변

1

솔루션에서 새 프로젝트를 만들고 기본 응용 프로그램 (또는 주 응용 프로그램)의 출력으로 "설치 관리자"를 설정해야 종속성 자체를 해결할 수 있습니다.

+0

미안하지만 위의 내용을 전혀 이해하지 못했습니다. 솔루션에서 어떤 새로운 프로젝트를 만들어야하며 어떤 목적으로 사용해야합니까? 설치 프로그램을 기본 응용 프로그램의 출력으로 설정하면 무엇을 의미합니까? 정교하게 노력하십시오. 감사. – Eliaz

+0

예, 설치하려는 응용 프로그램에 배치 할 출력이 설정되어 있어야합니다. 참조는 스스로 해결해야하며 속성에서 어셈블리를 배포하는 방법을 정의 할 수 있어야합니다. 그러나 우리가 똑같은 것을 말하고 있는지는 정말로 모르겠습니다. – squelos

1

나는 원래 생각했던 문제를 가지고있었습니다. Winform 응용 프로그램과 콘솔 응용 프로그램이 두 개의 개별 프로젝트로 있지만 단일 설치 프로젝트가 두 개를 모두 처리합니다.

Winform 응용 프로그램과 콘솔 응용 프로그램 모두 솔루션의 일부가 아닌 폴더의 파일 참조와 C# 클래스 프로젝트의 다른 두 외부 어셈블리 (프로젝트 참조)를 사용합니다.

설치 프로그램은 설치 프로그램에서 프로젝트 출력이 모두 설치 시스템의 단일 폴더로 결합된다고 가정합니다. 따라서 모든 공통 어셈블리는 해당 어셈블리를 필요로하는 실행 파일과 함께 상주합니다. 따라서 첫 번째 실행 파일의 프로젝트 출력을 폴더에 추가하면 모든 종속성이 나타나는 것을 볼 수 있으며 두 번째 프로젝트 출력이 추가되면 아직 추가되지 않은 어셈블리 만 나타납니다.

응용 프로그램 폴더 아래에 하위 폴더를 만들면 Visual Studio에서 프로젝트 출력 (exe, dll 및 res)과 관련하여 응용 프로그램 폴더를 전체 단위로 처리하는 것으로 나타납니다.

이 문제를 해결하는 방법에는 두 가지가 있습니다. 첫 번째는 각 실행 파일에 대해 별도의 설치 프로젝트를 만드는 것입니다. 대규모 프로젝트에서는 많은 설치 프로젝트가 될 수 있습니다. Use Visual Studio Setup Project to automatically register and GAC a COM Interop DLL

MSI는 작업을 얻을 수 있습니다 : 당신이 한 장소에서 모든 것을 유지하려면

은 더 나은 옵션은 여기에 또 다른 스택 오버플로 문서에 설명되어있는 공유 어셈블리에 대한 GAC를 사용하는 것입니다 끝난. "대상 컴퓨터의 파일 시스템", 을 마우스 오른쪽 단추로 클릭하고 GAC를 클릭합니다. 추가 된 폴더 인 Add, Project Output을 마우스 오른쪽 단추로 누릅니다. 그 은 조립이 잘되었는지 확인합니다.

나중에 GAC를 변경하고 향상 시키면 어셈블리가 .NET 레이어에서 관리되기 때문에 GAC가 더 나은 솔루션입니다. 장점 중 하나.NET은 Windows 98 및 이전 버전의 Windows에 있던 이전 "DLL 지옥"문제를 제거하는 것입니다. 나는 당신의 공통적 인 코드를 위해 그것을 사용하는 것을 강력히 권한다.

관련 문제