C# 다른 버전 dll 참조

4037 단어 C#
같은 해결 방안에서 서로 다른 프로젝트는 같은 DLL의 다른 버전을 인용해야 할 수 있다(반드시 그렇지는 않으면 추천하지 않는다).다음은 해결 방안입니다.
기본적으로 여기 참조: 다른 버전 dll 인용
대체 링크: 서로 다른 버전 dll과 같은 해결 방안 또는 의존 관계가 있는 두 항목을 인용하여 같은 이름이지만 서로 다른 버전의 DLL을 인용합니다
추가 보완 사항은 다음과 같습니다.

href는 상대 경로를 사용해야 한다


이곳의 상대 경로는 프로그램 출력 디렉터리 ($(OutDir) 의 상대 경로를 가리킨다.
<dependentAssembly>
    <assemblyIdentity name="LiteDB" publicKeyToken="4ee40123013c9f27" culture="neutral" />
    <codeBase version="2.0.2.0" href="LiteDB.2.0.2.0\LiteDB.dll" />
    <codeBase version="4.0.0.0" href="LiteDB.4.0.0.0\LiteDB.dll" />
dependentAssembly>

dll 파일의git 관리


일반 출력 디렉터리의 내용은 자동으로 생성되고bin 디렉터리에 위치하면git 관리에 포함되지 않기 때문에 프로그램 디렉터리에서 하나의 폴더로 dll 파일을 관리하고git 창고에 포함시켜야 합니다.다시 시작 프로그램의 사전 생성 이벤트에서 xcopy 명령을 이용하여 dll 파일을 출력 디렉터리의 위치로 복사합니다.예:
xcopy /E /Y $(SolutionDir)_Externals\Refs\LiteDB.2.0.2.0\*.dll $(OutDir)LiteDB.2.0.2.0\  
xcopy /E /Y $(SolutionDir)_Externals\Refs\LiteDB.4.0.0.0\*.dll $(OutDir)LiteDB.4.0.0.0\  

이렇게 하면 dll 파일을git 관리에 포함시킬 수 있을 뿐만 아니라, 팀의 다른 구성원들이 당신이 제출한 코드를 끌어낸 후에도 dll이 부족하여 실행할 수 없는 상황이 발생하지 않을 것이다. (xcopy를 사용하여 dll를 출력 디렉터리로 복사했기 때문이다.)

DLL 참조를 로컬로 복사 해제


일부 이상한 문제를 방지하려면 DLL 참조를 로컬 속성으로 복사하는 것을 닫는 것이 좋습니다.

업그레이드를 피하려면 어떻게 해야 합니까?


일반적으로 두 버전의 DLL을 사용하는 이유는 호환성 문제로 기존 데이터 등을 읽어야 하기 때문이다.구 버전의 인용이 업그레이드될 수 없는데 어떻게 해야 합니까?
NuGet 패키지의 예기치 않은 업그레이드 방지 - walterlv
END

좋은 웹페이지 즐겨찾기