2010-10-25 3 views
10

사용자 지정 DLL에 대한 프로젝트 참조가 많은 VS 2008 C# 웹 응용 프로그램이 있습니다. 이것들은 모두 웹 프로젝트의 상대 경로에 있습니다. 최근에 나는 Clean Solution이 웹 응용 프로그램의 bin \ debug 폴더에있는 DLL 중 일부는 제거하지만 전부는 제거하지 않는다는 것을 알게되었습니다. 예를 들면 다음과 같습니다.Visual Studio의 클린 솔루션이 모든 DLL/프로젝트 참조를 삭제하지 않습니다.

<Reference Include="TowerCo.Utilities, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL"> 
    <SpecificVersion>False</SpecificVersion> 
    <HintPath>..\..\Components\TowerCo.Utilities\bin\Debug\TowerCo.Utilities.dll</HintPath> 
</Reference> 
<Reference Include="TowerCo.WebControls, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL"> 
    <SpecificVersion>False</SpecificVersion> 
    <HintPath>..\..\Components\TowerCo.WebControls\bin\Debug\TowerCo.WebControls.dll</HintPath> 
</Reference> 

첫 번째 파일은 정상적으로 작동합니다 (새로 청소하면 청소되고 새 버전은 다시 빌드 할 때 웹 프로젝트에 복사 됨). 두 번째 파일은 작동하지 않습니다. 부작용은 종속성에 대한 변경 사항을 자동으로 선택하지 않는다는 것입니다.

도움 주셔서 감사합니다.

+0

첫 번째 DLL이 아닌 GAC에 두 번째 DLL이 있습니까? –

+0

좋은 생각이지만, GAC에 내 DLL이 없습니다. 일반적으로 우리는 프로젝트 참조를 사용하고 각 응용 프로그램마다 별도의 구성 요소 복사본을 배포합니다. –

+0

동일한 문제가 있습니다. 빌드 서버가 청소되지 않는 동일한 어셈블리를 배포하고 싶지 않다는 점에서 관련 문제가있는 것으로 보입니다. 그것은 컴파일 할 때 다른 모든 dev 컴퓨터에서 작동합니다. –

답변

2

언젠가 VS는 버전이 동일하면 최신 DLL을 선택하지 않습니다. AssemblyInfo.cs에서 버전을 변경하면 제대로 작동합니다.

과거에는 크기/타임 스탬프에 의존 할 때 같은 문제가 발생했지만 나중에 버전을 변경하면 Studio에서 이전 DLL을 제거하고 새 DLL을 복사한다는 사실을 깨달았습니다.

+0

AssemblyInfo.cs 버전 번호를 가장 작은 수정 번호로 수정했을 때이 문제가 계속 발생 함을 확인할 수 있습니다. –

4

'알고있는 파일'만 삭제하는 것 같습니다.

예를 들어 이전 라이브러리 파일과 이름이 변경된 프로젝트의 이전 참조가 여전히 존재합니다. 아주 이상한. 저는 항상 'Clean'이 단순한 삭제 일 뿐이라고 추측했습니다. 의심 스럽다면 각 폴더를 직접 확인하십시오.