Nice programing

파일 버전 및 어셈블리 버전을 사용하는 가장 좋은 방법은 무엇입니까?

nicepro 2021. 1. 5. 21:09
반응형

파일 버전 및 어셈블리 버전을 사용하는 가장 좋은 방법은 무엇입니까?


.NET에서는 프로젝트를 빌드 할 때 파일 버전과 어셈블리 버전의 두 가지 버전 번호를 사용할 수 있습니다. 이 번호를 어떻게 사용하고 있습니까? 동일하게 유지 하시겠습니까? 하나는 자동 증가하지만 다른 하나는 수동으로 변경 하시겠습니까?

또한 AssemblyInformationalVersion속성은 어떻습니까?

몇 가지 도움말을 제공하는 Microsoft KB (기술 자료) 문서 인 어셈블리 버전 및 어셈블리 파일 버전을 사용하는 방법을 찾았습니다 .


여러 파일 어셈블리 (예 : 1 개의 exe 및 5 개의 dll)가있는 시나리오에서 각 파일에 대해 서로 다른 파일 버전을 사용하지만 모두에 대해 동일한 어셈블리 버전을 사용하여 각 dll이 어떤 exe와 함께 사용되는지 알 수 있습니다.


여러 프로젝트가있는 솔루션에서 내가 찾은 한 가지 매우 유용한 점은 모든 AssemblyInfo 파일이 버전 관리를 관리하는 단일 프로젝트를 가리 키도록하는 것입니다. 따라서 내 AssemblyInfo에는 다음과 같은 줄이 있습니다.

[assembly: AssemblyVersion(Foo.StaticVersion.Bar)]

문자열을 선언하는 단일 파일이있는 프로젝트가 있습니다.

namespace Foo
{
    public static class StaticVersion
    {
         public const string Bar= "3.0.216.0"; // 08/01/2008 17:28:35
    }
}

자동 빌드 프로세스는 데이터베이스에서 가장 최근 버전을 가져오고 두 번째 마지막 숫자를 증가시켜 해당 문자열을 변경합니다.

기능 세트가 크게 변경 될 때만 주요 빌드 번호를 변경합니다.

파일 버전을 전혀 변경하지 않습니다.


KB 기사에서는 가장 중요한 차이점을 언급합니다. 파일 버전은 표시 목적으로 만 사용되는 반면 어셈블리 버전은 .NET로드 동작에서 중요한 역할을합니다.

어셈블리 버전 번호를 변경하면 어셈블리 전체의 ID가 변경됩니다. 개발자는 새 버전을 참조하기 위해 다시 빌드해야하며 (일부 자동 버전 관리 "정책"을 적용하지 않는 한) 런타임에는 버전 번호가 일치하는 어셈블리 만로드됩니다.

이것은 감사 목적으로 증가하고 가시성이 높은 버전 번호가 필요한 내 환경에서 중요하지만 개발자가 프로덕션에서 동시에 많은 버전을 다시 빌드하도록 강요하고 싶지는 않습니다. 이 경우 이전 버전과 호환되는 사소한 변경의 경우 파일 버전은 업데이트하지만 어셈블리 버전은 업데이트하지 않습니다.


파일 버전은 표시 목적으로 만 사용되는 반면 어셈블리 버전은 .NET로드 동작에서 중요한 역할을합니다.

좀 빠지는. 파일 버전은 기존 버전을 이전 버전보다 업그레이드 할 때 Windows Installer에서도 중요합니다.


내 현재 응용 프로그램에서 각 VS 프로젝트에는 다음 속성을 가진 "AssemblyBuildInfo"소스 파일에 대한 링크가 있습니다.

[assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyCompany("Acme Corporationy")]
[assembly: AssemblyCopyright("Copyright ©  2009 Acme Corporation")]

이렇게하면 솔루션의 모든 어셈블리가 동일한 버전과 회사 정보를 공유합니다 (즉, 변경해야하는 경우 한 번만 변경 함). FileVersion을 제외하면 자동으로 AssemblyVersion으로 설정됩니다.


@Adam : 각 빌드마다 파일 버전을 변경하고 있습니까? 버전 제어 (SYN 또는 VSS)를 사용하고 있으며 해당 정보를 사용하여 소스를 바이너리에 다시 연결하고 있습니까?

어셈블리 버전이 동일하게 유지된다는 것이 이해가되는 것 같습니다. 즉 "2.0.0.0"입니다. 그것은 제품의 배포에 해당합니다.

파일 버전은 소스 제어의 개정과 일치하도록 변경됩니다. "2.0.??.revision"이것은 특정 dll (또는 exe)에서이를 빌드 한 소스로의 링크를 제공합니다.


커뮤니티 http://blog.raffaeu.com/archive/2011/12/11/sharing-assembly-version-in-visual-studio-2010.aspx에 유용 할 수있는이 주제에 대한 블로그 게시물을 작성했습니다.


나는 그것들을 동일하게 유지합니다. 그러나 저는 AssemblyVersion 번호가 중요 해지는 시점 인 다중 파일 어셈블리가 없습니다. 자동 증가 대신 빌드 번호에 Microsoft 스타일의 날짜 인코딩을 사용합니다 (그만큼 중요한 항목이 빌드 된 횟수를 찾지 못함).

참조 URL : https://stackoverflow.com/questions/14770/how-best-to-use-file-version-and-assembly-version

반응형