From: Gert D. <dri...@us...> - 2008-02-09 20:36:50
|
Update of /cvsroot/nant/nant/src/NAnt.MSBuild In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv1460 Modified Files: MSBuildConfiguration.cs MSBuildProject.cs MSBuildProjectReference.cs Log Message: Introduced support for the platform part of a solution configuration. Sync with refactoring of NAnt.VSNet. Index: MSBuildConfiguration.cs =================================================================== RCS file: /cvsroot/nant/nant/src/NAnt.MSBuild/MSBuildConfiguration.cs,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** MSBuildConfiguration.cs 22 Dec 2006 17:30:21 -0000 1.1 --- MSBuildConfiguration.cs 9 Feb 2008 20:36:51 -0000 1.2 *************** *** 37,47 **** private readonly DirectoryInfo _outputDir; private readonly DirectoryInfo _objdir; ! ManagedOutputType _outputType; ! string _asmname; ! string _platform; ! public MSBuildConfiguration(MSBuildProject project, Microsoft.Build.BuildEngine.Project msproj) : base(project) { ! _name = msproj.GetEvaluatedProperty("Configuration"); _relativeOutputDir = msproj.GetEvaluatedProperty("OutputPath"); if (!_relativeOutputDir.EndsWith(Path.DirectorySeparatorChar.ToString(CultureInfo.InvariantCulture))) { --- 37,52 ---- private readonly DirectoryInfo _outputDir; private readonly DirectoryInfo _objdir; ! private readonly ManagedOutputType _outputType; ! private readonly string _asmname; ! private readonly string _platform; ! public MSBuildConfiguration(MSBuildProject project, Microsoft.Build.BuildEngine.Project msproj, Configuration projectConfig) : base(project) { ! _name = projectConfig.Name; ! _platform = projectConfig.Platform; ! ! msproj.GlobalProperties.SetProperty("Configuration", _name); ! msproj.GlobalProperties.SetProperty("Platform", _platform.Replace(" ", string.Empty)); ! _relativeOutputDir = msproj.GetEvaluatedProperty("OutputPath"); if (!_relativeOutputDir.EndsWith(Path.DirectorySeparatorChar.ToString(CultureInfo.InvariantCulture))) { *************** *** 56,60 **** _outputType = GetType(msproj.GetEvaluatedProperty("OutputType")); _asmname = msproj.GetEvaluatedProperty("AssemblyName"); - _platform = msproj.GetEvaluatedProperty("Platform"); } --- 61,64 ---- Index: MSBuildProject.cs =================================================================== RCS file: /cvsroot/nant/nant/src/NAnt.MSBuild/MSBuildProject.cs,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** MSBuildProject.cs 22 Dec 2006 17:30:22 -0000 1.1 --- MSBuildProject.cs 9 Feb 2008 20:36:51 -0000 1.2 *************** *** 19,23 **** using System; - using System.Xml; using System.CodeDom.Compiler; using System.Collections; --- 19,22 ---- *************** *** 26,29 **** --- 25,29 ---- using System.IO; using System.Text; + using System.Xml; using NAnt.Core; *************** *** 77,81 **** : base(xmlDefinition, solutionTask, tfc, gacCache, refResolver, outputDir) { string cfgname = solutionTask.Configuration; ! string platform = null; _msbuild = MSBuildEngine.CreateMSEngine(solutionTask); --- 77,81 ---- : base(xmlDefinition, solutionTask, tfc, gacCache, refResolver, outputDir) { string cfgname = solutionTask.Configuration; ! string platform = solutionTask.Platform; _msbuild = MSBuildEngine.CreateMSEngine(solutionTask); *************** *** 84,88 **** _msproj.LoadXml(xmlDefinition.OuterXml); _msproj.GlobalProperties.SetProperty("Configuration", cfgname); ! if (platform != null) _msproj.GlobalProperties.SetProperty("Platform", platform); if (outputDir != null) _msproj.GlobalProperties.SetProperty("OutputPath", outputDir.FullName); --- 84,88 ---- _msproj.LoadXml(xmlDefinition.OuterXml); _msproj.GlobalProperties.SetProperty("Configuration", cfgname); ! if (platform.Length > 0) _msproj.GlobalProperties.SetProperty("Platform", platform.Replace(" ", string.Empty)); if (outputDir != null) _msproj.GlobalProperties.SetProperty("OutputPath", outputDir.FullName); *************** *** 92,99 **** _projectPath = _msproj.GetEvaluatedProperty("ProjectPath"); ! //project configuration ! // - a little hack. Add just one configuration, which is building ! // - setting is get via MSBuild system ! ProjectConfigurations[cfgname] = new MSBuildConfiguration(this, _msproj); //references --- 92,107 ---- _projectPath = _msproj.GetEvaluatedProperty("ProjectPath"); ! ProjectEntry projectEntry = solution.ProjectEntries [_guid]; ! if (projectEntry != null && projectEntry.BuildConfigurations != null) { ! foreach (ConfigurationMapEntry ce in projectEntry.BuildConfigurations) { ! Configuration solutionConfig = ce.Key; ! Configuration projectConfig = ce.Value; ! ! ProjectConfigurations[projectConfig] = new MSBuildConfiguration(this, _msproj, projectConfig); ! } ! } else { ! Configuration projectConfig = new Configuration (cfgname, platform); ! ProjectConfigurations[projectConfig] = new MSBuildConfiguration(this, _msproj, projectConfig); ! } //references *************** *** 172,176 **** } ! public override System.Collections.ArrayList References { get { return _references; --- 180,184 ---- } ! public override ArrayList References { get { return _references; *************** *** 182,186 **** } ! public override bool IsManaged(string configuration) { return true; } --- 190,194 ---- } ! public override bool IsManaged(Configuration configuration) { return true; } *************** *** 197,203 **** } ! protected override BuildResult Build(string solutionConfiguration) { ! //DONE: MSBuild'll resolve all references once again // is there any way how to disable it? // moreover, they could be resolved to something else! --- 205,215 ---- } ! protected override BuildResult Build(Configuration solutionConfiguration) { ! // explicitly set the Configuration and Platform ! MSBuildConfiguration projectConfig = (MSBuildConfiguration) BuildConfigurations[solutionConfiguration]; ! _msproj.GlobalProperties.SetProperty("Configuration", projectConfig.Name); ! _msproj.GlobalProperties.SetProperty("Platform", projectConfig.PlatformName.Replace(" ", string.Empty)); ! // DONE: MSBuild'll resolve all references once again // is there any way how to disable it? // moreover, they could be resolved to something else! *************** *** 212,217 **** //@(ReferenceSatellitePaths) ! //or maybe modify original references to contain full path to whatever we resolved? ! //that seems reasonable. Try it: _msproj.RemoveItemsByName("Reference"); _msproj.RemoveItemsByName("ProjectReference"); --- 224,229 ---- //@(ReferenceSatellitePaths) ! // or maybe modify original references to contain full path to whatever we resolved? ! // that seems reasonable. Try it: _msproj.RemoveItemsByName("Reference"); _msproj.RemoveItemsByName("ProjectReference"); *************** *** 227,231 **** } ! //this should disable assembly resolution and always use hintpath (which we suply) _msproj.GlobalProperties.SetProperty("AssemblySearchPaths", "{HintPathFromItem}"); --- 239,243 ---- } ! // this should disable assembly resolution and always use hintpath (which we supply) _msproj.GlobalProperties.SetProperty("AssemblySearchPaths", "{HintPathFromItem}"); Index: MSBuildProjectReference.cs =================================================================== RCS file: /cvsroot/nant/nant/src/NAnt.MSBuild/MSBuildProjectReference.cs,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** MSBuildProjectReference.cs 22 Dec 2006 17:30:23 -0000 1.1 --- MSBuildProjectReference.cs 9 Feb 2008 20:36:51 -0000 1.2 *************** *** 70,74 **** } ! public override bool IsManaged(string solutionConfiguration) { return true; } --- 70,74 ---- } ! public override bool IsManaged(Configuration solutionConfiguration) { return true; } |