0

: 예상대로 나는 웹 애플리케이션과 ClassLibrary 모두의 소스 코드 솔루션을 빌드 할 때왜 MSBuild는 copy local이 false로 설정된 dll을 복사합니까? 우리의 솔루션의 구조이다

Solution.sln 
    WebApp.csproj 
    references ClassLibrary 
    ClassLibrary.csproj 
    references System.Net.Http.Formatting.dll with Copy local = false 

는 지역의 작품을 복사 System.Net.Http.Formatting.dll는 복사되지 않습니다 WebApp/bin 디렉토리

그러나 프로젝트를 최종 클라이언트에 배포 할 때 컴파일 된 클래스 라이브러리 (.dll)를 참조하는 웹 애플리케이션 소스 코드 만 제공합니다. 이 경우 솔루션은 다음과 같습니다

Solution.sln 
    WebApp.csproj 
    references ClassLibrary.dll which uses System.Net.Http.Formatting.dll 

이 부분적으로 컴파일 된 솔루션을 컴파일의 System.Net.Http.Formatting.dll는 우리에게 문제의 원인이되는 웹 애플리케이션/bin 폴더에 복사됩니다. 나는 세부적인 빌드 출력을 조사했는데 DLL이 복사 작업이 DLL의 소스 위치에 복사

C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies\System.Net.Http.Formatting.dll 

일부 다른 하나는 System.Net.Http.Formatting의 언급이 있습니다입니다. 내가 꽤 이해가 안되는 DLL 어셈블리.

System.Net.Http.Formatting.dll이 bin 폴더에 복사되지 않도록하는 방법은 무엇입니까?

감사합니다.

+0

당신이 할 수있는 한 가지는 ** post build ** 이벤트에'del $ (TargetDir) System.Net.Http.Formatting.dll/Q/F'와 같은 것을 넣는 것입니다. –

+0

먼저 프로세스가 파일을 복사 중입니다. –

+0

@ T.S. 우리는 bin/폴더에있는 dll이 고객이 자신의 dll을 집어 넣을 수 없도록하고 싶지 않습니다. 버전 2에서 System.Net.Http.Formatting.dll을 사용하고 있지만 버전 4에서 System.Net.Http.Formatting.dll을 사용하려고한다고 가정합니다. 그래서 우리는 bin/clean을 유지하고 우리 버전의 DLL을로드합니다 다른 위치에서. bin/폴더에서 파일을 삭제하면 고객의 버전도 삭제됩니다. 어쨌든 고마워! – jakubka

답변

1

copylocal 표기법이 고객이 읽을 수없는 프로젝트 파일에있는 것처럼 보입니다. 그러면 어떻게 알 수 있습니까? 전 이적 의존성 (transitive dependencies)을 통해 발견되도록하지 않고 직접 프로젝트 파일에 참조를 추가 할 수 있습니다. 그런 다음 이들을 no-copy-local로 표시 할 수 있습니다. WebApp.csproj에 ref로 추가하는 것은 GUI 내에서 완전히 트릭을 수행해야한다고 생각합니다. 그걸로 시작한 다음, XML이 좋지 않으면 바이올린을 사용하십시오.

+0

정확히 ... "복사 로컬"이 전이 참조를 통해 전송되지 않는다는 것과 같은 감정을 가지고 있습니다. 해당 DLL을 직접 참조하여 어떤 일이 발생하는지 알아 보겠습니다. 감사합니다. – jakubka

+0

* 전송되지 않았습니다. 어디서나 찾을 수 없습니다 .DLL에 통합되지 않았습니다. 답변을 수락하는 방법 또는 여전히 문제가 있습니까? –

+0

예. 내일, 제안대로 웹 응용 프로그램 프로젝트에 대한 참조를 직접 추가하려고합니다. 그게 도와주세요. 나는 대답을 옳은 것으로 표시 할 것입니다. 그렇지 않으면, 우리는 다른 해결책을 생각해야 할 것입니다. :) 한 번 더 : 도와 줘서 고마워! – jakubka