studio入門 - Visual Studio項目屬性中的各種“構建操作”設置是什麼?它們的作用是什麼?




visual studio入門 (5)

大多數情況下,您只需將Visual Studio為您設置的默認值設為...我指的是在解決方案資源管理器中選擇的每個文件的BuildAction屬性。 有很多選擇,很難知道他們每個人會做什麼。


Page - 接受指定的XAML文件,並編譯為BAML,並將該輸出嵌入到您的程序集的託管資源流中(特別是AssemblyName.g.resources)。此外,如果您具有適當的XAML元素文件,它將創建一個blah.g.cs文件,該文件將包含該頁面的“代碼隱藏”的部分類; 這基本上涉及調用BAML goop來重新提供文件到內存中,並將你的類的任何成員變量設置為現在創建的項目(例如,如果你將x:Name =“foo”放在一個項目上,你可以做到這一點.foo.Background = Purple;或類似的。

ApplicationDefinition - 類似於Page,除了它會改變onestep furthur,並且定義了你的應用程序的入口點,它將實例化你的應用程序對象,調用它的運行,然後實例化StartupUri屬性設置的類型,並將給你的主窗口。

另外,要明確的是,這個問題的總體結果是無限的, 任何人都可以通過構建一個MSBuild任務來定義額外的BuildActions。 如果您查看%systemroot%\ Microsoft.net \ framework \ v {version} \目錄,並查看Microsoft.Common.targets文件,則應該能夠解密更多(例如,使用VS Pro和更高版本,有一個“影子”動作,允許您生成私有訪問器來幫助單元測試私有類。


VS2010有一個'Build Action'屬性,還有'Copy to Output Directory'。 因此,如果復制屬性設置為“如果較新則復制”或“始終複製”,則“無”行為仍會復製到構建目錄。

因此,應該保留“內容”的構建操作以指示您將通過“Application.GetContentStream”訪問的內容

對於某些外部鏈接的.config包含的內容,我使用了“生成操作”設置的“無”和“複製為更新”的“複製到輸出指令”設置。

G。


在VS2008中,似乎最有用的文檔條目是:

Windows Presentation Foundation構建WPF應用程序(WPF)

MS-幫助://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處理資源項目。

內容標識隨應用程序分發的內容文件。 描述內容文件的元數據被編譯到應用程序中(使用AssemblyAssociatedContentFileAttribute)。


從文檔:

BuildAction屬性表示執行構建時Visual Studio用文件執行的操作。 BuildAction可以具有以下幾種值之一:

無 - 該文件未包含在項目輸出組中,並且未在構建過程中編譯。 一個示例是包含文檔的文本文件,如自述文件。

編譯 - 文件被編譯到編譯輸出中。 此設置用於代碼文件。

內容 - 該文件未編譯,但包含在內容輸出組中。 例如,此設置是.htm或其他類型Web文件的默認值。

嵌入式資源 - 該文件作為DLL或可執行文件嵌入到主項目構建輸出中。 它通常用於資源文件。


  • :該文件未包含在項目輸出組中,並且未在構建過程中編譯。 一個示例是包含文檔的文本文件,如自述文件。

  • 編譯 :文件被編譯到編譯輸出中。 此設置用於代碼文件。

  • 內容 :允許您通過Application.GetContentStream(URI)檢索文件(與程序集在同一目錄中)作為流。 要使此方法起作用,需要一個AssemblyAssociatedContentFile自定義屬性,當您將文件標記為“內容”時,Visual Studio會優雅地添加該屬性,

  • 嵌入式資源 :將文件嵌入到獨占程序集清單資源中。

  • 資源 (僅限WPF) :將文件嵌入到名為AppName.g.resources的共享(通過具有類似設置的程序集中的所有文件)程序集清單資源中。

  • Page (僅限WPF) :用於將xaml文件編譯為baml 。 然後嵌入與Resource相同的技術(即可用作AppName.g.resources)

  • ApplicationDefinition (僅限WPF) :標記定義應用程序的XAML / class文件。 您使用x:Class =“Namespace.ClassName”指定代碼隱藏,並使用StartupUri =“Window1.xaml”設置啟動窗體/頁面

  • SplashScreen (僅限WPF) :標記為SplashScreen的圖像在WPF應用程序加載後自動顯示,然後淡入

  • DesignData :編譯XAML視圖模型,以便可以使用Visual Studio中的示例數據預覽usercontrols(使用模擬類型)

  • DesignDataWithDesignTimeCreatableTypes :編譯XAML視圖模型,以便可以使用 Visual Studio中的示例數據預覽usercontrols (使用實際類型)

  • EntityDeploy :( 實體框架)用於部署實體框架工件

  • CodeAnalysisDictionary :包含拼寫規則的 自定義詞典的XML文件







projects-and-solutions