문제

우리는 현재 가열 내부 논의 여부를 실제.NET 어셈블리의 이름을 포함해야 한 코드는 버전 번호(예:CodeName02.exe 나 CompanyName.CodeName02.dll).는 누군가의 신뢰할 수 있는 소스,마이크로소프트 같이,그에 대한 지침을 제공합이 문제입니까?

도움이 되었습니까?

해결책

이것이 속성/AssemblyInfo.cs 파일의 것입니다.

해당 파일에는 파일 버전과 어셈블리 버전이 있습니다.

[assembly: AssemblyVersion("1.1.0.256"]
[assembly: AssemblyFileVersion("1.1.0.256")]

이것들이 설정되면 당신은 그것들을 사용하여 바이너리의 버전을 추적 할 수 있습니다. 오른쪽 클릭-> 속성이있는 탐색기에서 쉽게 볼 수 있습니다.

Microsoft의 응용 프로그램 (및 OS)에 포함 된 DLL 또는 EXE 이름은 해당 컨벤션을 사용하지 않습니다.

다른 시스템은이 숫자를 사용하여 종속성을 해결하고 버전을 확인합니다. 예를 들어 MSI 시스템은 버전 속성을 기반으로 바이너리를 업데이트합니다.

다른 팁

프레임 워크 설계 지침 ~에 의해 krzysztof cwalina 그리고 브래드 아브람 Microsoft는 어셈블리 이름 지정을 제안합니다

<Company>.<Component>.dll

GAC 및 DLL 파일 속성에 버전이 표시되기 때문에 (버전 #를 사용하지 않음) 더 지원합니다.

나는 권위있는 것을 알지 못하지만 일관된 이름을 사용하면 설치 스크립트 프로세스에서 문서화에 이르기까지 모든 것을 단순화 할 것 같습니다. 파일에 버전을 메타 데이터로 저장할 수 있다는 점을 감안할 때 파일 이름에 왜 필요한지 모르겠습니다. 왜 이름이 다른 파일을 설명 해야하는 번거 로움을 설정 해야하는 이유는 무엇입니까?

그 문제에 대한 .NET 프레임 워크 또는 기타 Microsoft 제품을 살펴보십시오. 어셈블리 이름의 일부로 버전 번호를 넣는 것은 나쁜 생각처럼 들립니다.

어셈블리 메타 데이터 섹션에는이 (및 기타 정보)를위한 장소가 있습니다. (AssemblyInfo.cs)

이 정보는 Windows 탐색기에서 볼 수 있습니다 (속성 대화 상자, 상태 표시 줄, 툴팁 - 모두이 정보가 표시됨).

나는 devexpress를 알고 있습니다 웹 사이트 xtraeditors8.2.dll과 같은 어셈블리 이름의 일부로 버전 표시기를 사용하십시오. 그 이유는 동일한 디렉토리에 여러 버전의 어셈블리를 가질 수 있기를 원하기 때문입니다. 예를 들어 동일한 쉘/클라이언트의 일부로 분포 된 약 15 개의 SmartClients가 있습니다. 각 SmartClient에는 다른 버전의 DeVexpress 컨트롤이있을 수 있으므로 동일한 디렉토리에 Xtraeditors7.1.dll 및 xtraeditors8.2를 가질 수 있어야합니다.

재사용 가능한 모듈의 종속성이고 여러 버전 1.0, 1.1, 1.2 등에 존재할 수있는 공통 라이브러리가있는 경우, 충돌을 피하기 위해 버전 번호가 이름에 포함될 수 있다는 유효한 주장이 될 것입니다. 일반적인 Libs가 GAC에 살고 있지 않다는 것을 감안할 때.

DLL의 파일 이름에 버전 번호를 넣는 주요 아이디어는 DLL 지옥, DLL의 여러 버전을 갖는 경우 모두 동일한 이름을 가진 문제가 발생했습니다 (즉, 실제 버전의 DLL이있는 데 필요한 기능이 있습니다).

.NET 프레임 워크는 더 전통적인 C/C ++ DLL 파일에 비해 종속성을 완전히 처리합니다. GAC에 여러 버전의 라이브러리가있을 수 있습니다. 주로 GAC는 다른 파일에 연결하는 '가짜'폴더이기 때문입니다. 파일 시스템에서 실행 파일 설치 (동일한 폴더 배포 등)에 어셈블리를 포함시킬 수있는 것 외에도.

버전 정보에 포함될 수 있습의 첫 번째 절차를 수행하여 소스 파일을 수 있는 쿼리를 통해 반사 등등.

일부 공급업체는 버전 번호를 포함합에 이름을 보다 쉽게 무엇을 한 눈에 볼것입니다.Microsoft dll 이름달을 포함 버전 번호를 프레임워크 디렉토리에 있습니다.

버전은 속성으로 설정할 수 있으므로 반 중복되지 않습니까?

나는 또한 사지로 가서 dll 이름을 빠르게 살펴보면 MS가 표준이 없다고 제안합니다 : user32.dll, tcpmon.dll, winsock.dll 등.

Microsoft는 32의 접미사를 사용하여 32 비트 DLL 버전을 나타내어 DLL이 기존 16 비트 DLL 파일과 공존 할 수 있도록했습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top