<solution>

Compiles VS.NET solutions (or sets of projects), automatically determining project dependencies from inter-project references.

This task support the following projects:

  • Visual Basic .NET
  • Visual C# .NET
  • Visual J# .NET
  • Visual C++ .NET
Right now, only Microsoft Visual Studio .NET 2002 and 2003 solutions and projects are supported. Support for .NET Compact Framework projects is also not available at this time.

The NAnt.VSNet.Tasks.SolutionTask also supports the model of referencing projects by their output filenames, rather than referencing them inside the solution. It will automatically detect the existence of a file reference and convert it to a project reference. For example, if project "A" references the file in the release output directory of project "B", the NAnt.VSNet.Tasks.SolutionTask will automatically convert this to a project dependency on project "B" and will reference the appropriate configuration output directory at the final build time (ie: reference the debug version of "B" if the solution is built as debug).

The NAnt.VSNet.Tasks.SolutionTask expects all project files to be valid XML files.

Resx Files

When building a project for a down-level target framework, special care should be given to resx files. Resx files (can) contain references to a specific version of CLR types, and as such are only upward compatible.

For example: if you want to be able to build a project both as a .NET 1.0 and .NET 1.1 assembly, the resx files should only contain references to .NET 1.0 CLR types. Failure to do this may result in a System.InvalidCastException failure at runtime on machines with only the .NET Framework 1.0 installed.

Parameters

Attribute Type Description Required
configuration string
The name of the solution configuration to build.
True
enablewebdav bool
Allow the task to use WebDAV for retrieving/compiling the projects within solution. Use of NAnt.VSNet.Types.WebMap is preferred over WebDAV. The default is false.
False
includevsfolders bool
Includes Visual Studio search folders in reference search path. The default is true.
False
outputdir directory
The directory where compiled targets will be placed. This overrides path settings contained in the solution/project.
False
platform string
The name of platform to build the solution for.
False
solutionfile file
The name of the VS.NET solution file to build.
False
failonerror bool
Determines if task failure stops the build, or is just reported. The default is true.
False
if bool
If true then the task will be executed; otherwise, skipped. The default is true.
False
unless bool
Opposite of NAnt.Core.Task.IfDefined. If false then the task will be executed; otherwise, skipped. The default is false.
False
verbose bool
Determines whether the task should report detailed build log messages. The default is false.
False

Nested elements

<assemblyfolders>

Set of folders where references are searched when not found in path from project file (HintPath).

</assemblyfolders>

<property>

Set of properties set at solution level. Builders for projects in solution may or may not use them.

No child element found

<property>

<excludeprojects>

Fileset of projects to exclude.

</excludeprojects>

<projects>

The projects to build.

</projects>

<referenceprojects>

The projects to scan, but not build.

</referenceprojects>

<webmap>

WebMap of URL's to project references.

Parameters

Attribute Type Description Required
path file
Specifies the actual path to the project file, or the path fragment to replace.
True
url string
Specifies the URL of the project file, or a URL fragment to match.
True
casesensitive bool
Specifies whether the mapping is case-sensitive or not.
False
if bool
Indicates if the URL of the project file should be mapped.
False
unless bool
Indicates if the URL of the project file should not be mapped.
False

<webmap>

Examples

Compiles all of the projects in test.sln, in release mode, in the proper order.

<solution configuration="release" solutionfile="test.sln" />

Compiles all of the projects in projects.txt, in the proper order.

    <solution configuration="release">
    <projects>
        <includesfile name="projects.txt" />
   </projects>
</solution>

Compiles projects A, B and C, using the output of project X as a reference.

    <solution configuration="release">
    <projects>
        <include name="A\A.csproj" />
        <include name="B\b.vbproj" />
        <include name="C\c.csproj" />
    </projects>
    <referenceprojects>
        <include name="X\x.csproj" />
    </referenceprojects>
</solution>

Compiles all of the projects in the solution except for project A.

    <solution solutionfile="test.sln" configuration="release">
    <excludeprojects>
        <include name="A\A.csproj" />
    </excludeprojects>
</solution>

Compiles all of the projects in the solution mapping the specific project at http://localhost/A/A.csproj to c:\inetpub\wwwroot\A\A.csproj and any URLs under http://localhost/B/[remainder] to c:\other\B\[remainder]. This allows the build to work without WebDAV.

    <solution solutionfile="test.sln" configuration="release">
    <webmap>
        <map url="http://localhost/A/A.csproj" path="c:\inetpub\wwwroot\A\A.csproj" />
        <map url="http://localhost/B" path="c:\other\B" />
    </webmap>
</solution>

Compiles all of the projects in the solution placing compiled outputs in c:\temp.

<solution solutionfile="test.sln" configuration="release" outputdir="c:\temp" />

Requirements

Assembly
NAnt.VSNet.dll
Namespace
NAnt.VSNet.Tasks