나는 여기서 누락 된 단순한 것이 있기를 바라고 있습니다. 내가 할 수있는 느슨하게 몇 내 서비스가 더 큰 유연성을 얻을 수 있도록 두 개의 프로젝트두 개의 개별 프로젝트를 유지 관리 할 수 있지만 하나의 DLL로 병합 할 수 있습니까?
ProjectName.Core &
ProjectName.Infrastructure
이 전형적인 양파 아키텍처에서 만든을 유지하기 위해 노력하고 있습니다. 인프라 프로젝트는 핵심 프로젝트를 참조합니다. 컴파일 된 후에는이 DLL을 생성합니다.
ProjectName.Core.dll &
ProjectName.Infrastructure.dll
그러나이 DLL은 단지 1 개의 DLL 만 생성하고 싶습니다.
ProjectName.Infrastructure.dll (or even ProjectName.dll)
나는이 작업을 수행 할 수 있지만,이 예외를 throw 인프라 참조 코어 이후이 핵심 DLL을 찾을 수 없기 때문에 ILMerge를 사용하는 것을 시도했다. 그것은 분명히 그 자체 내에서 보이지 않습니다. 나의 현재 솔루션을 사용하여 ILMerge에게 호출
지금 내가
ProjectName.Core &
ProjectName.DataAccess &
ProjectName.Web
편집으로 함께 같은 결합 할 것이다 코어를 참조하는 다른 조합 및 다른 프로젝트를 가지고 있기 때문에 별도의 프로젝트를 관리 할 필요가 Nant 빌드 스크립트. 그것은 성공적으로 병합되었습니다. 하지만 병합 DLL을 사용하려고하면 코어 라이브러리를 찾을 수 없기 때문에 예외가 발생합니다.
<target name="merge.core">
<property name="temp.dir" value="${build.dir}\Temp\"/>
<mkdir dir="${temp.dir}" if="${not directory::exists(temp.dir)}"/>
<property name="tools.dir" value=""${directory::get-current-directory()}\Tools\""/>
<exec program="Tools\ILMerge\ILMerge.exe" workingdir=".">
<arg value="/t:Library"/>
<arg value="/ndebug"/>
<arg value="/out:"${build.dir}\Temp\ProjectName.Infrastructure.dll""/>
<arg value=""${build.dir}ProjectName.Core.dll""/>
<arg value=""${build.dir}Xceed.Compression.dll""/>
<arg value=""${build.dir}ProjectName.Infrastructure.dll""/>
<arg value=""${build.dir}ProjectName.Infrastructure.XmlSerializers.dll""/>
</exec>
<delete file="${build.dir}ProjectName.Core.dll"/>
<delete file="${build.dir}Xceed.Compression.dll"/>
<delete file="${build.dir}ProjectName.Infrastructure.dll"/>
<delete file="${build.dir}ProjectName.Infrastructure.XmlSerializers.dll"/>
<move file="${build.dir}\Temp\ProjectName.Infrastructure.dll" tofile="${build.dir}ProjectName.Infrastructure.dll"/>
<delete dir="${temp.dir}" if="${directory::exists(temp.dir)}"/>
</target>
좀 더 명확해야합니다. 코어 라이브러리에서 개체를 사용할 수는 있지만 인프라 라이브러리에서는 사용할 수 없습니다. 한 번 그 개체 중 하나를 인스턴스화하려고 .NET. 종속성을로드하려고 시도하지만 찾을 수 없습니다.
또는 두 개의 DLL을 제공하고 완료 할 수 있습니다. 그냥 ... –
이 또한 사실입니다. 우리는 현재 모든 DLL을 제공하며 사용자를 위해 간단하게하려고합니다. –