For the most part, you just take whatever Visual Studio sets it for you as a default... I'm referring to the BuildAction property for each file selected in Solution Explorer. There are a number of options and it's difficult to know what each one of them will do.
None: The file is not included in the project output group and is not compiled in the build process. An example is a text file that contains documentation, such as a Readme file.
Compile: The file is compiled into the build output. This setting is used for code files.
Content: Allows you to retrieve a file (in the same directory as the assembly) as a stream via Application.GetContentStream(URI). For this method to work, it needs a AssemblyAssociatedContentFile custom attribute which Visual Studio graciously adds when you mark a file as "Content"
Embedded resource: Embeds the file in an exclusive assembly manifest resource.
Resource (WPF only): Embeds the file in a shared (by all files in the assembly with similar setting) assembly manifest resource named AppName.g.resources.
Page (WPF only): Used to compile a xaml
file into baml
. The baml
is then embedded with the same technique as Resource
(i.e. available as `AppName.g.resources)
ApplicationDefinition (WPF only): Mark the XAML/class file that defines your application. You specify the code-behind with the x:Class="Namespace.ClassName" and set the startup form/page with StartupUri="Window1.xaml"
SplashScreen (WPF only): An image that is marked as SplashScreen
is shown automatically when an WPF application loads, and then fades
DesignData: Compiles XAML viewmodels so that usercontrols can be previewed with sample data in Visual Studio (uses mock types)
DesignDataWithDesignTimeCreatableTypes: Compiles XAML viewmodels so that usercontrols can be previewed with sample data in Visual Studio (uses actual types)
EntityDeploy: (Entity Framework): used to deploy the Entity Framework artifacts
CodeAnalysisDictionary: An XML file containing custom word dictionary for spelling rules