2011-04-20 6 views
1

WinForms 프로젝트와 솔루션이 있으며 일부 클래스 라이브러리 프로젝트도 같은 솔루션에 추가되었습니다.WinForms에서 혼란스러운 DLL 사용

WinForms 프로젝트는 클래스 라이브러리의 코드를 사용합니다. 나는 약 1 년 동안이 응용 프로그램을 사용하고 있었고 항상 잘 작동했습니다.

그러나 오늘은 클래스 라이브러리에 일부 기능을 추가했지만 이러한 변경 사항은 실행중인 응용 프로그램에는 나타나지 않습니다. 또한 클래스 중 하나에 새로운 공용 메서드를 추가하려고 시도했지만 해당 메서드가 Intellisense에서 해당 응용 프로그램에 표시되지 않습니다.

이것은 정말 간단해야하지만 WinForms가 백그라운드에서 자동으로 DLL을 복사하는 방식으로 어디에서 문제가 있는지 알 수 없습니다. 내가 본 모든 것이 나에게 맞는 것처럼 보인다. 코드는 이전 버전의 DLL을 사용하고 있다고 생각하는 것처럼 계속 작동합니다. 하지만 내 WinForms 애플 리케이션의 Bin 디렉토리에있는 DLL은 오늘 날짜가 있습니다.

아무에게도 해결책을 찾아야 할 곳을 추천 해 줄 수 있습니까?

답변

1

Michael's answer에 따르면 어셈블리 참조가 실제로 프로젝트 참조가 아니라 컴파일 한 경로가 아닌 특정 경로 (예 : bin \ Release)에있을 수 있습니다.

또한 사소한 것처럼 들릴 수도 있지만 빌드 기능을 사용하면 솔루션의 구성 속성이 실제로 프로젝트를 빌드하는지 다시 확인하십시오! 프로젝트를 중단했다는 것을 잊어 버렸습니다. 변경 사항이 내 앱에 없을 때 당황했습니다.

+0

고마워,하지만이 모든 과정이 제대로 설계되지 않았어. 참조를 설정하는 올바른 방법은 무엇입니까? 프로젝트 나 컴파일 된 DLL을 참조합니까? 그리고 디버그 대 릴리즈 빌드에 대한 대답이 바뀌 었습니까? –

+1

코드를 솔루션의 일부로 사용하는 경우 빌드 유형간에 문제가 발생하지 않도록 프로젝트 참조를 사용해야합니다. 추가 단점이 있지만 컴파일 시간이 길어질 수 있습니다. 종속성 중 하나가 변경되면 종속성이 자동으로 다시 빌드됩니다. – Reddog

0

GAC에 클래스 라이브러리를 넣었습니까?

같은 AssemblyVersion을 사용하는 강력한 이름의 어셈블리가 GAC에있는 경우 솔루션의 어셈블리 버전 대신 사용됩니다.

+0

나는 확실히 모르겠다. 그러나 다시 한번,이 전체 레이아웃은 신중하게 관찰자에게 완전한 신비 인 블랙 박스로 조심스럽게 만들어진 것처럼 보입니다. –

2

나는 프로젝트 속성에 들어가서 참조를 삭제하고, 당신이 생각하는 위치에서 당신의 dll이 오는지 확인하기 위해 그것을 다시 추가한다. & 프로젝트 재구성

+0

고마워,하지만이 모든 과정이 제대로 설계되지 않았다. 참조를 설정하는 올바른 방법은 무엇입니까? 프로젝트 나 컴파일 된 DLL을 참조합니까? 그리고 디버그 대 릴리즈 빌드에 대한 대답이 바뀌 었습니까? –

+0

포함 된 프로젝트를 적극적으로 수정하는 경우 프로젝트 참조로 추가하십시오. – Michael