Show/Hide Toolbars

XSharp

Project properties in Visual Studio are stored in the project files. The file names for X# projects end with the .xsproj extension.

Project files are a special kind of XML files.

These XML files contains various groups of information.

Properties at the project level are stored in <PropertyGroup> nodes.

Some of these properties are "Global" and some of these properties have a condition through which they are only active when a certain "configuration" is selected, such as "Debug" or "Release".

Properties like the dialect and the output filename are global.

Properties such as the optimization, PDB generation and output folders are configuration-specific.

 

The project files also contain the list of references to external assemblies, other projects and COM components and the list of files.

The build system inside Visual Studio uses the contents of the project files and constructs a command line that is passed to the X# compiler to produce the output for the project.

We have developed a set of dialogs that allows you to set the various properties for a project. The following chapters will show you these dialogs and will discuss the various options that you can set on each page.

 
Tip: Since the project file is an XML file, you can also directly edit the project file if you want. For example, you can add <Import> lines to import common properties from "include" files.
We use that internally for our assemblies, so common properties are declared at one location.
When doing that, you must be careful when using the project property dialogs inside Visual Studio.
These dialogs will not understand that some values were read from an imported file and will change the values in the xsproj file, even when they were imported from an external file.
Additionally, the order of the various property groups is important:
The PropertyGroups with the Pre and PostBuild events are expected to be at the end of the XML file.
 

 

The lists of external references and lists of items inside a project are stored in <ItemGroup> nodes.