코드 자체에서 참조되지 않는 어셈블리를 무시하므로 컴파일러에 사용되지 않는 참조 makes no difference을 제거한다는 내용을 읽었습니다."사용하지 않는 참조 제거"의 목적은 무엇입니까
그러나 나는 그 때문에 믿기 어려워 보이는데, Removing unused references의 실제 목적은 무엇입니까? 생성 된 어셈블리 크기 나 그 밖의 영향을받지 않습니다. 또는 스마트 동작이 C# 컴파일러 (csc.exe)에만 국한되며 vbc.exe에 고유하지 않습니까?
이 기능을 사용할 수 없다면 왜 ReSharper 기능으로 제공합니까? Visual Studio 프로젝트 구성 대화 상자 내에서 제공되는 이유는 무엇입니까?
어디에서 이것이 유용할까요? 내가 생각할 수있는 유일한 활동은 배포 단계입니다. 참조 (used 또는 unused)는 여전히 설치 프로그램에 의해 복사됩니다. 그러나 GAC에있는 어셈블리 (예 : BCL 어셈블리)의 경우에는 문제가되지 않습니다.
CLR은 런타임시 컴파일러 최적화로 참조가 제거 된 모듈을 어떻게로드합니까? 내가 여기서 무엇을 놓치고 있니? – Dan
@ 단 - 또한 왜이 답변에 다른 upvotes가 있는지 이해하지 못합니다. 다른 게시물에서 읽은 것에서 컴파일러가 어셈블리 참조를 사용하지 않으면 최종 출력에 넣지 않습니다. 참조 된 어셈블리는 JIT가 해당 메서드에 대한 첫 번째 호출시에만로드됩니다. 이 대답이 증명으로 가져온로드 된 모듈 창은 디버그 모드에 있기 때문에 모든 참조를 표시 할 수 있습니다. – BornToCode
@BornToCode 또한, CLR이 의존성이 실제로 사용되는지 여부를 결정하는 것이 어렵다면, "사용되지 않은 참조 제거"는 어떻게 작동합니까? 참조가 사용되는지 여부를 결정하는 것은 간단합니다. 코드가 해당 어셈블리의 네임 스페이스에서 아무 것도 참조하지 않으면 사용되지 않습니다. – Dan