다른 응용 프로그램에서 사용할 라이브러리를 개발하고 있으며이 라이브러리에는 NLog 덕분에 많은 디버깅 및 로깅 문이 있습니다.Visual Studio - 릴리스 모드에서 참조를 제거하는 방법
릴리스 모드로 전환 할 때 NLog.dll에 대한 참조를 제외 할 수 있습니까? 내가 좋은 방법을 생각할 수 없다
건배,
다른 응용 프로그램에서 사용할 라이브러리를 개발하고 있으며이 라이브러리에는 NLog 덕분에 많은 디버깅 및 로깅 문이 있습니다.Visual Studio - 릴리스 모드에서 참조를 제거하는 방법
릴리스 모드로 전환 할 때 NLog.dll에 대한 참조를 제외 할 수 있습니까? 내가 좋은 방법을 생각할 수 없다
건배,
수동으로 csproj 파일을 편집하고, 같은 것을 수행 할 수 있습니다
<Reference Include="NLog" Condition="'$(Configuration)' == 'Debug'" />
이 단지는 디버그에 해당 어셈블리를 참조 할 수 있습니다. 이 동작은 구성을 변경할 때 Visual Studio의 참조 목록에 반영되지 않기 때문에이 작업을 자주 수행하지 않는 것이 좋습니다. 비록 컴파일 할 때 작동하지 않습니다.
일단 대상을 바꾸었다면 언로드하고 다시로드하면 VS를 강제로 실행할 수 있다고 생각합니다. –
이 방법을 광범위하게 사용하며 매우 유용합니다. 불행히도 Visual Studio는 "비활성화 된"참조에 대한 경고를 생성합니다. 그럼에도 불구하고 64 비트 빌드 및 32 비트 빌드에서 다른 파일을 참조하는 것과 같은 매우 중요한 시나리오가 허용됩니다. – Sander
이 작업을 수행합니다. NLog.dll에 대한 스텁 참조를 작성하지 않았다면 말입니다. 코드에서 참조를 사용하고 있기 때문에 릴리스에서 제거 방법을 알 수는 없습니다.
아마 너무 늦었 겠지만 나중에 NLog.dll을 래핑 한 클래스를 작성한 다음 한 곳에서 변경하여 실제로 출시 버전에 로그인하지 않도록 할 수 있습니다. 아니면 어떤 종류의 깃발이 있습니다.
#if 디버그에 코드를 추가하면 릴리스 모드에서 컴파일 할 때 코드가 제외됩니다. –
와우, 모든 로그 호출에서이를 수행하는 것은 상당히 고통 스럽습니다. 랩핑을 제안한 다음 Conditional 속성을 사용하는 것이 좋습니다. – fostandy
내가 아는 유일한 방법은 참조를 완전히 꺼내 반사를 통해 어셈블리를 호출하는 것입니다. 그런 다음 어셈블리가로드되는 경우에만 로그해야합니다.
해당 DLL에서 코드를 사용할 수없는 경우 참조를 제거 할 이유가 없습니다. 이 경우 단순히 DLL을 제거 할 수 있습니다.
왜 그렇게하고 싶습니까?
로깅을 중지하려면 프로그래밍 방식으로 로깅을 해제 할 수 있습니다. 성능 저하는 최소화 될 것입니다. (크로스 프로세스를 로깅 할 때도 NLog를 사용하여 큰 성공을 거두었습니다.)
그렇지 않으면 위에서 설명한대로 래핑해야합니다.
-Scott는
좋은 질문입니다. 릴리스 모드에서 참조를 제거해야하는 유스 케이스가 있습니다. –