There is no centralized documentation on these properties. The reason for it is that this list is extensible, each Visual Studio Project type can supply it's own. This also means that the contents of the drop-down changes depending on what Visual Studio payloads you have installed, which extensions, what programing language you're using etc.
This is an example of how this is extended for Code Analysis:
<!-- Make AdditionalFiles and CodeAnalysisDictionary available as a Build Action in Visual Studio -->
<ItemGroup>
<AvailableItemName Include="AdditionalFiles" />
<AvailableItemName Include="CodeAnalysisDictionary" />
</ItemGroup>
The others can be found by crawling the MsBuild targets folder, each is registered through AvailableItemName
items in the .target
files.
- None,
- Compile - Passes the files to the compiler that belongs to the project type
- Content - Marks files as content and optionally copies them to the output directory
- Embedded Resource - Used to embed content into asseblies as resource
- AdditionalFiles - Used by Code Analysis features. Defined in Microsoft.CodeAnalysis.Targets
- CodeAnalysisDictionary - Used by Code Analysis features, FxCop and Roslyn. Defined in Microsoft.CodeAnalysis.Targets
- ApplicationDefinition - Defined in Microsoft.Winfx.targets
- Page - Defined in Microsoft.Winfx.targets
- Resource - Defined in Microsoft.Winfx.targets
- SplashScreen - Defined in Microsoft.Winfx.targets
- DesignData - Defined in Microsoft.Winfx.targets
- DesignDataWithDesignTimeCreatableTypes - Defined in Microsoft.Winfx.targets
- EntityDeploy - Defined in Microsoft.Data.Entity.targets
- XamlAppDef - Defined in Microsoft.Winfx.targets and Microsoft.Xaml.targets
- Fakes - Used by the Fakes framework (part of Visual Studio Enterprise). A framework which allows writing tests that can bypass static, internal and private API's.
My system has a few extra ones on top of the ones you've posted. You'll need to search the docs for each project type for the meaning. Depending on their source you may need to look at the docs of 3rd party systems.
The extensibility of MsBuild makes it a very powerful system, at the same time it sometimes makes it nightmarish to figure out why things are the way they are. I've kept to the reasoning: "If I don't know what it means, I probably won't need it...".