문제

VS2005 및 VB.NET 사용

생성 한 데이터 저장소의 API 인 프로젝트가 있습니다.컴파일되면 api.dll가 생성됩니다.

동일한 솔루션에 API 프로젝트에 대한 프로젝트 참조가있는 두 번째 프로젝트가 있습니다.이 프로젝트는 컴파일 될 때 wrapper.dll를 생성합니다.이것은 기본적으로 애플리케이션에 특정한 API 용 래퍼입니다. 다른 응용 프로그램에서 wrapper.dll를 사용할 때 wrapper.dllapi.dll를 새 응용 프로그램에 복사해야합니다.래퍼 프로젝트에서 api.dll를 자체적으로 컴파일하여 하나의 dll 만 이동할 수 있도록하려면 어떻게해야합니까?

도움이 되었습니까?

해결책

@Jas, Visual Studio의 특별한 기능입니다. 절차는 "강자 공유 프로젝트 간 키 파일 이름 지정 ". 이 예는 강력한 이름의 키 파일을 공유하기위한 것이지만 모든 종류의 파일에서 작동합니다.

간단히, 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 "기존 항목 추가"를 선택합니다. 링크 할 파일의 디렉토리를 찾아서 해당 파일을 강조 표시합니다. "추가"또는 "열기"(Visual Studio 버전에 따라 다름)를 누르기 만하면 해당 단추의 오른쪽에있는 작은 아래쪽 화살표를 클릭합니다. Visual Studio 2003을 사용하는 경우 "열기"또는 "파일 연결"옵션이 표시되고 2005의 경우 "추가"또는 "링크로 추가"옵션이 표시됩니다 (2008 년에 대해서는 잘 모르겠습니다). 어쨌든 "링크"라는 단어를 포함하는 것을 선택하십시오. 그러면 프로젝트는 본질적으로 파일을 참조합니다. 원래 프로젝트와 "링크"한 프로젝트 모두에서 액세스 할 수 있습니다.

이것은 wrapper.dll 및 api.dll의 모든 기능을 포함하는 어셈블리를 만드는 편리한 방법이지만 api.dll에 새 파일을 추가 할 때마다이 절차를 반복해야합니다 (그러나 wrapper.dll이 아님).

다른 팁

더 쉬운 방법이 있습니다.wrapper.dll 프로젝트에서 api.dll의 소스 파일을 가리키는 바로 가기 (Visual Studio-ese에서는 연결된 파일이라고 함)를 만듭니다.그러면 소스가 wrapper.dll로 직접 컴파일됩니다.

ILMerge 와 같은 도구를 사용해야 할 것입니다.두 어셈블리를 병합합니다.

api.dll을 리소스로 wrapper.dll로 컴파일 할 수 있다고 생각합니다.그런 다음 api.dll에서 해당 리소스에 수동으로 액세스하고 수동으로로드합니다.디스크에서 수동으로 어셈블리를로드 했으므로 Stream에서로드하는 것이 다르면 안됩니다.

텍스트 또는 xml 파일을 포함하는 것과 유사하게 프로젝트에 dll을 파일로 포함하려고합니다 (컴파일을위한 프로젝트 참조 외에).그런 다음 빌드 작업을 "Embedded Resource"로 설정합니다.wrapper.dll 내에서 다른 포함 된 리소스와 마찬가지로 Assembly 개체를 사용하여 api.dll에 액세스합니다.그런 다음 Assembly.Load http://msdn.microsoft.com/en-us/library/system.reflection.assembly.load.aspx

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