You can use file properties to indicate what actions the project system should perform on the files. For example, you can set file properties to indicate whether a file should be compiled or embedded into the build output as a resource.
You can select any file in Solution Explorer and then examine its properties in the Properties window. Visual Basic and Visual C# files have four properties: FileName, BuildAction, CustomTool, and CustomToolNamespace.
Note The BuildAction, CustomTool, and CustomToolNamespace properties are provided for advanced scenarios. The default values are typically sufficient and do not need to be changed.
You can rename a file by clicking the FileName property in the Properties window and typing in the new name. Note that if you change the file's name, Visual Studio .NET will automatically rename any .vb or .resx files that are associated with it.
The BuildAction property indicates what Visual Studio .NET does with a file when a build is executed. BuildAction can have one of several values:
- 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 - The file is not compiled, but is included in the Content output group. For example, this setting is the default value for an .htm or other kind of Web file.
- Embedded Resource - This file is embedded in the main project build output as a DLL or executable. It is typically used for resource files.
The default value for BuildAction depends on the extension of the file you add to the solution. For example, if you add a Visual Basic project to Solution Explorer, the default value for BuildAction is Compile, because the extension .vb indicates a code file that can be compiled. File names and extensions appear in Solution Explorer.
Note that the name of the file in your project will not be the identifier for the managed resource in the assembly manifest (see Assembly Manifest for more information). The identifier will be namespace.filename.extension, where namespace is the value of the DefaultNamespace property in a Visual C# project or RootNamespace property in a Visual Basic .NET project. Filename and extension remain the same as their original designation. If the file is a .resx file, the project system will run resgen.exe on the file, creating a .resource file. The .resource file will be embedded in the assembly, so the assembly manifest will refer to the .resources file and not the .resx file.
For example, if you add the file MyFile.bmp to a project whose default namespace is MyProj, and set the build action to Embedded Resource, MyProj.MyFile.bmp will be the identifier in the assembly manifest. If you then add the file MyFile.resx to the project, the default build action will be Embedded Resource and, MyProj.MyFile.resources will be the identifier in the assembly manifest.
For more information on how to access resource files (compiled from .resx files) at run time, see ResourceManager Class. For more information on how to access all other embedded files and resources at run time, see Assembly.GetManifestResourceStream Method.
Custom tools are components that can be used to transform files from one type to another at design time. For example, a custom tool might be a dataset code generator that reads in an XML Schema (.xsd) file, and generates classes in a code file that programmatically exposes its tables and columns. There is a predefined list of custom tools available in the product; this property allows you to see which custom tool is applied to a file. In rare circumstances, you might need to change the value of this property. The value of this property must either be blank or one of the built-in custom tools.
To set or change the custom tool, click the CustomTool property in the Properties window and type in the name of a custom tool.
If you have a custom tool assigned to your project, the CustomToolNamespace property allows you to specify the namespace you want to assign to code generated by the custom tool. When you specify a value for the CustomToolNamespace property, code generated by the tool is placed in the specified namespace. If the property is empty, generated code is placed in the default namespace for the folder in which the converted file lives; for Visual Basic, this is the project's root namespace, and for Visual C# this corresponds to the setting of the DefaultNamespace property for the folder.