private void PerformInit()
{
// get framework-specific project node
XmlNode projectNode = _frameworkNode.SelectSingleNode("nant:project",
NamespaceManager);
if (projectNode == null)
throw new ArgumentException("No <project> node is defined.");
// create XmlDocument from project node
XmlDocument projectDoc = new XmlDocument();
projectDoc.LoadXml(projectNode.OuterXml);
// create and execute project
Project frameworkProject = new Project(projectDoc);
frameworkProject.BaseDirectory = AppDomain.CurrentDomain.BaseDirectory;
frameworkProject.Execute();
XmlNode runtimeNode = _frameworkNode.SelectSingleNode ("runtime",
NamespaceManager);
if (runtimeNode != null) {
_runtime = new Runtime ();
_runtime.Parent = _runtime.Project = frameworkProject;
_runtime.NamespaceManager = NamespaceManager;
_runtime.Initialize(runtimeNode, frameworkProject.Properties, this);
}
string sdkDir = GetXmlAttributeValue(_frameworkNode, "sdkdirectory");
try {
sdkDir = frameworkProject.ExpandProperties(sdkDir,
Location.UnknownLocation);
} catch (BuildException) {
// do nothing with this exception as a framework is still
// considered valid if the sdk directory is not available
// or not configured correctly
}
// the sdk directory does not actually have to exist for a
// framework to be considered valid
if (sdkDir != null && Directory.Exists(sdkDir))
_sdkDirectory = new DirectoryInfo(sdkDir);
_project = frameworkProject;
_status = InitStatus.Initialized;
}