수색…


비고

파일 이름 AssemblyInfo.cs 는 규약에 따라 개발자가 제작중인 전체 어셈블리를 설명하는 메타 데이터 특성을 배치하는 원본 파일로 사용됩니다.

[AssemblyTitle]

이 특성은이 특정 어셈블리에 이름을 지정하는 데 사용됩니다.

[assembly: AssemblyTitle("MyProduct")]

[조립 제품]

이 특성은이 특정 어셈블리가 사용되는 제품을 설명하는 데 사용됩니다. 여러 어셈블리는 동일한 제품의 구성 요소 일 수 있으며,이 경우 모두이 특성에 대해 동일한 값을 공유 할 수 있습니다.

[assembly: AssemblyProduct("MyProduct")]

전역 및 로컬 AssemblyInfo

전역을 사용하면 DRYness가 향상되므로 분산이있는 프로젝트의 경우 AssemblyInfo.cs와 다른 값만 입력하면됩니다. 이 사용은 귀하의 제품에 하나 이상의 비주얼 스튜디오 프로젝트가 있다고 가정합니다.

GlobalAssemblyInfo.cs

using System.Reflection;
using System.Runtime.InteropServices;
//using Stackoverflow domain as a made up example    

// It is common, and mostly good, to use one GlobalAssemblyInfo.cs that is added 
// as a link to many projects of the same product, details below
// Change these attribute values in local assembly info to modify the information.
[assembly: AssemblyProduct("Stackoverflow Q&A")]
[assembly: AssemblyCompany("Stackoverflow")]
[assembly: AssemblyCopyright("Copyright © Stackoverflow 2016")]

// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("4e4f2d33-aaab-48ea-a63d-1f0a8e3c935f")]
[assembly: ComVisible(false)] //not going to expose ;)

// Version information for an assembly consists of the following four values:
// roughly translated from I reckon it is for SO, note that they most likely 
// dynamically generate this file
//      Major Version  - Year 6 being 2016
//      Minor Version  - The month
//      Day Number     - Day of month
//      Revision       - Build number
// You can specify all the values or you can default the Build and Revision Numbers 
// by using the '*' as shown below: [assembly: AssemblyVersion("year.month.day.*")]
[assembly: AssemblyVersion("2016.7.00.00")] 
[assembly: AssemblyFileVersion("2016.7.27.3839")]

AssemblyInfo.cs - 프로젝트마다 하나씩

//then the following might be put into a separate Assembly file per project, e.g.
[assembly: AssemblyTitle("Stackoveflow.Redis")]

다음 절차를 사용하여 GlobalAssemblyInfo.cs를 로컬 프로젝트에 추가 할 수 있습니다.

  1. 프로젝트 컨텍스트 메뉴에서 Add / Existing Item ...을 선택하십시오.
  2. GlobalAssemblyInfo.cs를 선택하십시오.
  3. 오른손의 작은 아래쪽 화살표를 클릭하여 Add-Button을 확장하십시오.
  4. 버튼 드롭 다운 목록에서 "링크로 추가"를 선택하십시오.

[AssemblyVersion]

이 특성은 버전을 어셈블리에 적용합니다.

[assembly: AssemblyVersion("1.0.*")]

* 문자는 컴파일 할 때마다 자동으로 버전의 일부를 자동으로 증가시키는 데 사용됩니다 ( "빌드"번호로 자주 사용됨)

어셈블리 속성 읽기

.NET의 풍부한 리플렉션 API를 사용하면 어셈블리의 메타 데이터에 액세스 할 수 있습니다. 예를 들어, 다음 코드를 사용 this 어셈블리의 title 속성을 가져올 수 있습니다.

using System.Linq;
using System.Reflection;

...

Assembly assembly = typeof(this).Assembly;
var titleAttribute = assembly.GetCustomAttributes<AssemblyTitleAttribute>().FirstOrDefault();

Console.WriteLine($"This assembly title is {titleAttribute?.Title}");

자동 버전 관리

소스 컨트롤의 코드에는 기본적으로 (SVN ids 또는 Git SHA1 해시) 또는 명시 적으로 (Git 태그) 버전 번호가 있습니다. AssemblyInfo.cs의 버전을 수동으로 업데이트하는 대신 빌드 타임 프로세스를 사용하여 소스 제어 시스템의 버전을 AssemblyInfo.cs 파일에 그리고 어셈블리에 쓸 수 있습니다.

GitVersionTask 또는 SemVer.Git.Fody NuGet 패키지는 위의 예입니다. 예를 들어 GitVersionTask를 사용하려면 프로젝트에 패키지를 설치 한 후 AssemblyInfo.cs 파일에서 Assembly*Version 특성을 제거하십시오. 이렇게하면 GitVersionTask가 어셈블리 버전 관리를 담당하게됩니다.

Semantic Versioning이 사실상의 표준이되어 SemVer를 따르는 소스 컨트롤 태그를 사용하는 것이 좋습니다.

공통 필드

AssemblyInfo의 기본 필드를 완성하는 것이 좋습니다. 이 정보는 설치 프로그램에 의해 선택 될 수 있으며 프로그램 및 기능 (Windows 10)을 사용하여 프로그램을 제거하거나 변경할 때 나타납니다.

최소값은 다음과 같아야합니다.

  • AssemblyTitle - 일반적으로 네임 스페이스입니다 ( 예 : MyCompany.MySolution.MyProject).
  • AssemblyCompany - 법적 단체 이름
  • AssemblyProduct - 여기에서 볼 수있는 마케팅
  • AssemblyCopyright - 그렇지 않으면 엉망으로 보일 정도로 최신 상태로 유지하십시오.

'AssemblyTitle'은 DLL의 Properties Details 탭을 검사 할 때 'File description'이됩니다.

[AssemblyConfiguration]

AssemblyConfiguration : AssemblyConfiguration 특성에는 어셈블리를 작성하는 데 사용 된 구성이 있어야합니다. 조건부 컴파일을 사용하여 다른 어셈블리 구성을 올바르게 포함하십시오. 아래 예와 비슷한 블록을 사용하십시오. 많이 사용하는 구성을 추가하십시오.

#if (DEBUG)

[assembly: AssemblyConfiguration("Debug")]

#else

[assembly: AssemblyConfiguration("Release")]

#endif

[InternalsVisibleTo]

어셈블리의 internal 클래스 또는 함수를 다른 어셈블리에서 액세스 가능하게하려면 액세스가 허용 된 어셈블리 이름과 InternalsVisibleTo 선언합니다.

조립이 예제 코드 MyAssembly.UnitTests 호출시킨다 internal 의 요소를 MyAssembly .

[assembly: InternalsVisibleTo("MyAssembly.UnitTests")]

이것은 불필요한 public 선언을 방지하기위한 단위 테스트에 특히 유용합니다.

[AssemblyKeyFile]

어셈블리를 GAC에 설치하려면 강력한 이름이 있어야합니다. 강력한 명명 어셈블리를 위해서는 공개 키를 만들어야합니다. .snk 파일을 생성합니다.

강력한 이름 키 파일을 만들려면

  1. VS2015에 대한 개발자 명령 프롬프트 (관리자 액세스 권한 포함)
  2. 명령 프롬프트에서 cd ​​C : \ Directory_Name을 입력하고 Enter 키를 누릅니다.
  3. 명령 프롬프트에서 sn -k KeyFileName.snk을 입력 한 다음 Enter 키를 누릅니다.

지정된 디렉토리에 keyFileName.snk이 생성되면 프로젝트에서 참조를 제공합니다. AssemblyKeyFileAttribute 속성에 snk 파일의 경로를 지정하여 클래스 라이브러리를 빌드 할 때 키를 생성합니다.

속성 -> AssemblyInfo.cs

[assembly: AssemblyKeyFile(@"c:\Directory_Name\KeyFileName.snk")]

Thi는 빌드 후에 강력한 이름의 어셈블리를 생성합니다. 강력한 이름 어셈블리를 만든 다음 GAC에 설치할 수 있습니다.

해피 코딩 :)



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow