Development Tip

Visual Studio 프로젝트 속성의 다양한 "빌드 작업"설정은 무엇이며 어떤 역할을합니까?

yourdevel 2020. 9. 28. 10:16
반응형

Visual Studio 프로젝트 속성의 다양한 "빌드 작업"설정은 무엇이며 어떤 역할을합니까?


대부분의 경우 Visual Studio에서 기본값으로 설정 한대로 가져옵니다 . 저는 솔루션 탐색기에서 선택한 각 파일에 대한 BuildAction 속성을 참조합니다 . 여러 가지 옵션이 있으며 각각이 무엇을할지 알기 어렵습니다.


  • 없음 : 파일이 프로젝트 출력 그룹에 포함되지 않고 빌드 프로세스에서 컴파일되지 않습니다. Readme 파일과 같은 문서가 포함 된 텍스트 파일을 예로들 수 있습니다.

  • 컴파일 : 파일이 빌드 출력으로 컴파일됩니다. 이 설정은 코드 파일에 사용됩니다.

  • Content : Application.GetContentStream (URI)을 통해 파일 (어셈블리와 동일한 디렉터리에 있음)을 스트림으로 검색 할 수 있습니다. 이 메서드가 작동하려면 파일을 "콘텐츠"로 표시 할 때 Visual Studio가 정중하게 추가하는 AssemblyAssociatedContentFile 사용자 지정 특성이 필요합니다.

  • 포함 된 리소스 : 독점 어셈블리 매니페스트 리소스에 파일을 포함합니다.

  • 리소스 (WPF 만 해당) : AppName.g.resources라는 이름의 공유 (유사한 어셈블리의 모든 파일에 의해) 어셈블리 매니페스트 리소스에 파일을 포함합니다.

  • 페이지 (WPF 만 해당) : xaml파일을 baml. baml다음과 같은 기술이 내장되어 있습니다 Resource(즉, AppName.g.resources`로 사용 가능)

  • ApplicationDefinition (WPF 만 해당) : 애플리케이션을 정의하는 XAML / 클래스 파일을 표시합니다. x : Class = "Namespace.ClassName"으로 코드 숨김을 지정하고 StartupUri = "Window1.xaml"로 시작 양식 / 페이지를 설정합니다.

  • SplashScreen (WPF 만 해당) : WPF 애플리케이션이로드 될 때 자동으로 표시된 다음 페이드 되는 것으로 표시된 이미지SplashScreen

  • DesignData : Visual Studio에서 샘플 데이터로 사용자 컨트롤을 미리 볼 수 있도록 XAML 뷰 모델을 컴파일합니다 (모의 형식 사용).

  • DesignDataWithDesignTimeCreatableTypes : Visual Studio에서 샘플 데이터로 사용자 컨트롤을 미리 볼 수 있도록 XAML 뷰 모델을 컴파일 합니다 (실제 형식 사용).

  • EntityDeploy : (Entity Framework) : Entity Framework 아티팩트를 배포하는 데 사용됩니다 .

  • CodeAnalysisDictionary : 맞춤법 규칙에 대한 사용자 지정 단어 사전이 포함 된 XML 파일


문서에서 :

BuildAction 속성은 빌드가 실행될 때 Visual Studio가 파일로 수행하는 작업을 나타냅니다. BuildAction은 여러 값 중 하나를 가질 수 있습니다.

없음-파일이 프로젝트 출력 그룹에 포함되지 않으며 빌드 프로세스에서 컴파일되지 않습니다. Readme 파일과 같은 문서가 포함 된 텍스트 파일을 예로들 수 있습니다.

컴파일-파일이 빌드 출력으로 컴파일됩니다. 이 설정은 코드 파일에 사용됩니다.

콘텐츠-파일이 컴파일되지 않지만 콘텐츠 출력 그룹에 포함됩니다. 예를 들어,이 설정은 .htm 또는 다른 종류의 웹 파일에 대한 기본값입니다.

포함 된 리소스-이 파일은 기본 프로젝트 빌드 출력에 DLL 또는 실행 파일로 포함됩니다. 일반적으로 리소스 파일에 사용됩니다.


페이지-지정된 XAML 파일을 가져 와서 BAML로 컴파일하고 해당 출력을 어셈블리의 관리 리소스 스트림 (특히 AssemblyName.g.resources)에 포함합니다. 또한 루트 XAML 요소에 적절한 특성이있는 경우 파일이 있으면 blah.g.cs 파일이 생성되며, 여기에는 해당 페이지에 대한 "코드 숨김"의 일부 클래스가 포함됩니다. 이것은 기본적으로 BAML goop에 대한 호출을 포함하여 파일을 메모리로 재수 화하고 클래스의 멤버 변수를 현재 생성 된 항목으로 설정합니다 (예 : 항목에 x : Name = "foo"를 넣는 경우). , this.foo.Background = Purple; 또는 이와 유사한 작업을 수행 할 수 있습니다.

ApplicationDefinition-Page와 비슷하지만 한 단계 더 나아가 앱 개체를 인스턴스화하고 실행을 호출 한 다음 StartupUri 속성에 의해 설정된 유형을 인스턴스화하고 메인 창을 제공하는 애플리케이션의 진입 점을 정의합니다. .

또한,이 질문은 전체적으로 결과 세트에서 무한합니다. 누구나 MSBuild 작업을 작성하여 추가 BuildAction을 정의 할 수 있습니다. % systemroot % \ Microsoft.net \ framework \ v {version} \ 디렉토리에서 Microsoft.Common.targets 파일을 보면 더 많은 것을 해독 할 수 있습니다 (예 : VS Pro 이상, 개인 클래스를 단위 테스트하는 데 도움이되는 개인 접근자를 생성 할 수있는 "Shadow"작업이 있습니다.


VS2010에는 'Build Action'과 'Copy to Output Directory'에 대한 속성이 있습니다. 따라서 복사 속성이 '최신 인 경우 복사'또는 '항상 복사'로 설정된 경우 '없음'작업은 빌드 디렉터리로 계속 복사됩니다.

따라서 'Content'의 Build Action은 'Application.GetContentStream'을 통해 액세스 할 콘텐츠를 나타 내기 위해 예약되어야합니다.

일부 외부 링크 .config 포함에 대해 'Build Action'설정 'None'및 'Copy to Output Direcotry'설정 'Copy if Newer'를 사용했습니다.

지.


VS2008에서 가장 유용한 문서 항목은 다음과 같습니다.

Windows Presentation Foundation WPF 응용 프로그램 빌드 (WPF)

ms-help : //MS.VSCC.v90/MS.MSDNQTR.v90.en/wpf_conceptual/html/a58696fd-bdad-4b55-9759-136dfdf8b91c.htm

ApplicationDefinition 응용 프로그램 정의가 포함 된 XAML 태그 파일 (루트 요소가 Application 인 XAML 태그 파일)을 식별합니다. Install이 true이고 OutputType이 winexe 인 경우 ApplicationDefinition은 필수입니다. WPF 응용 프로그램 및 결과적으로 MSBuild 프로젝트에는 ApplicationDefinition이 하나만있을 수 있습니다.

페이지 콘텐츠가 이진 형식으로 변환되고 어셈블리로 컴파일되는 XAML 태그 파일을 식별합니다. 페이지 항목은 일반적으로 코드 숨김 클래스와 함께 구현됩니다.

가장 일반적인 페이지 항목은 최상위 요소가 다음 중 하나 인 XAML 파일입니다.

Window (System.Windows..::.Window).

Page (System.Windows.Controls..::.Page).

PageFunction (System.Windows.Navigation..::.PageFunction<(Of <(T>)>)).

ResourceDictionary (System.Windows..::.ResourceDictionary).

FlowDocument (System.Windows.Documents..::.FlowDocument).

UserControl (System.Windows.Controls..::.UserControl).

리소스 응용 프로그램 어셈블리로 컴파일 된 리소스 파일을 식별합니다. 앞서 언급했듯이 UICulture는 리소스 항목을 처리합니다.

Content Identifies a content file that is distributed with an application. Metadata that describes the content file is compiled into the application (using AssemblyAssociatedContentFileAttribute).


How about this page from Microsoft Connect (explaining the DesignData and DesignDataWithDesignTimeCreatableTypes) types. Quoting:

The following describes the two Build Actions for Sample Data files.

Sample data .xaml files must be assigned one of the below Build Actions:

DesignData: Sample data types will be created as faux types. Use this Build Action when the sample data types are not creatable or have read-only properties that you want to defined sample data values for.

DesignDataWithDesignTimeCreatableTypes: Sample data types will be created using the types defined in the sample data file. Use this Build Action when the sample data types are creatable using their default empty constructor.

Not so incredibly exhaustive, but it at least gives a hint. This MSDN walkthrough also gives some ideas. I don't know whether these Build Actions are applicable for non-Silverlight projects also.


  • Fakes: Part of the Microsoft Fakes (Unit Test Isolation) Framework. Not available on all Visual Studio versions. Fakes are used to support unit testing in your project, helping you isolate the code you are testing by replacing other parts of the application with stubs or shims. More here: https://msdn.microsoft.com/en-us/library/hh549175.aspx

참고URL : https://stackoverflow.com/questions/145752/what-are-the-various-build-action-settings-in-visual-studio-project-properties

반응형