faqprojectfileformat

Cancel
Save
Edit

Project File Format


General File Format Concepts

* In what order is the project file processed?
* What's your story with XML namespaces?
* What are the various expressions that ""MSBuild"" supports?
* What is the difference between $(foo), @(foo), and %(foo)?
		         * How can I get the Project output binary and the list of files with/without writing a Task.
	

Conditions

* What logical operators are supported in the Condition attribute?
* Can I call a custom user-defined function inside a Condition?
* How can I test if an item list contains a particular value?

Properties

* What are the property precedence rules?
* What is the list of reserved properties?
* Is there a way for a task to access all the project properties without having to pass them into the task individually?
* Why don't property references embedded inside environment variables get expanded?
* When should I use properties instead of items?

Items

* What is the point of ""ItemGroups"" really?
* What is the list of the built-in item meta-data names?
* How does the attribute work?
* How does item Include and Exclude work?
* When should I use items instead of properties?

Target

* What is target batching, and how does it work?
* How does target-level timestamp checking work?
* Why can't I run the same target twice with different properties?
* How do I do the equivalent of a ?
* How do I execute a target when an error occurs?

Tasks

* How does task batching work?
* How can I run a tool to transform files from one type to another?
* How do pass input parameters into a task?
* How do I retrieve output parameters from a task?
* How do I ignore failures in a task and make the build continue?
* Why doesn't ""MSBuild"" gather my task outputs when the task fails?
* How do I write a new task?
* How can a task find out the current project filename and path?
* What's the right way for a task to log errors & warnings such that they will be recognized correctly by any build system (build.exe, Visual Studio, etc.)?
* My task needs to load an assembly. How do I release the lock on the assembly once my task is done?

""UsingTask""

* I get an error saying found conflicting versions of one of my task's assemblies. What happened?

Error, Message, and Warning

* Why does the <Message> tag seem to have access to properties defined after it?

Import


""ProjectExtensions""