내 Visual Studio 솔루션 (.NET 3.5를 대상으로하는 모든 사람)에 네 가지 프로젝트가 있습니다. 제 문제는 다음 두 가지만 중요합니다.
- MyBaseProject <-이 클래스 라이브러리는 타사 DLL 파일 (elmah.dll)을 참조합니다
- MyWebProject1 <-이 웹 응용 프로그램 프로젝트에는 MyBaseProject에 대한 참조가 있습니다.
"참조 추가 ..."→ "찾아보기"탭 → "elmah.dll"을 선택하여 Visual Studio 2008에서 MyBaseProject 에 elmah.dll 참조를 추가했습니다.
Elmah Reference의 속성은 다음과 같습니다.
- 별칭-글로벌
- 로컬 복사-true
- 문화-
- 설명-ASP.NET 용 ELMAH (오류 로깅 모듈 및 처리기)
- 파일 유형-조립
- 경로-D : \ webs \ otherfolder \ _myPath \ __ tools \ elmah \ Elmah.dll
- 해결됨-참
- 런타임 버전-v2.0.50727
- 지정된 버전-false
- 강력한 이름-거짓
- 버전-1.0.11211.0
에서 MyWebProject1 나는하여 프로젝트 MyBaseProject에 대한 참조를 추가하십시오 "MyBaseProject"를 선택 → "프로젝트"탭 → "참조 추가 ...". 이 참조의 속성은 다음 멤버를 제외하고 동일합니다.
- 설명-
- 경로-D : \ webs \ CMS \ MyBaseProject \ bin \ Debug \ MyBaseProject.dll
- 버전-1.0.0.0
Visual Studio 에서 빌드를 실행하면 elmah.dll 파일이 MyBaseProject.dll과 함께 MyWebProject1의 bin 디렉토리에 복사됩니다 !
그러나 솔루션에 대해 MSBuild 를 정리하고 실행 하면 (D : \ webs \ CMS> C : \ WINDOWS \ Microsoft.NET \ Framework \ v3.5 \ MSBuild.exe / t : ReBuild / p : Configuration = Debug MyProject.sln을 통해) ) elmah.dll이 MyWebProject1의 bin 디렉토리에 없습니다-빌드 자체에는 경고 나 오류가 없습니다!
MyBaseProject의 .csproj에 값이 "true"인 개인 요소가 포함되어 있는지 확인했습니다 ( Visual Studio에서 " copy local " 의 별칭이어야 함 ).
<Reference Include="Elmah, Version=1.0.11211.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\mypath\__tools\elmah\Elmah.dll</HintPath>
**<Private>true</Private>**
</Reference>
(비주얼 스튜디오는 "로컬 복사"가 true라고 말했지만 기본적으로 개인 태그는 .csproj의 xml에 나타나지 않았습니다. "로컬 복사"를 false로 저장했습니다-저장 됨-다시 다시 true로 설정하십시오-저장하십시오!)
MSBuild에 어떤 문제가 있습니까? MyWebProject1의 저장소에 (elmah.dll) 참조를 어떻게 복사합니까?
모든 프로젝트의 빌드 후 명령에 빌드 후 복사 작업을 추가하고 싶지 않습니다! (MyBaseProject에 많은 프로젝트가 의존한다고 가정 해보십시오!)