using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Reflection; using System.Reflection.Emit; using System.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; namespace OozyBuild { public class SlnProject : Project { static readonly string Extension = ".sln"; //static string IncredibuildExe = Environment.ExpandEnvironmentVariables(@"%ProgramFiles(x86)%\Incredibuild\BuildConsole.exe"); Solution.Sln sln = null; CustomSettings defaultSettings; bool setInitialSettings = false; Dictionary realConfigurationNames = new Dictionary(); public SlnProject() { // useDefaultScript = false; PropertyChanged += ( s, e ) => { if( e.PropertyName == "projectFileName" ) { sln = null; Init(); } }; } string platformsEnum = "Platforms"; string configsEnum = "Configurations"; public override void Init() { if( sln == null ) { Dictionary platforms = new Dictionary(); Dictionary configs = new Dictionary(); int val; sln = new Solution.Sln(); sln.Load( projectFileName, false ); string guid = Regex.Replace( Util.StringToGUID( projectFileName.ToLower() ).ToString(), @"[-]", "" ); string nameSpace = Path.GetFileNameWithoutExtension(projectFileName).ToLower() + "_" + guid; VisualStudioInfo ver = VisualStudio.GetAppropriateVersion( sln.visualStudioVersion ); if(ver != null && string.IsNullOrEmpty( visualStudioVersionName )) { visualStudioVersion = ver; visualStudioVersionName = ver.name; } ClassBuilder classBuilder = new ClassBuilder( nameSpace + "." + Path.GetFileNameWithoutExtension( projectFileName ) + "_BuildSettings", typeof( CustomSettings ) ); foreach( var config in sln.mConfigurations ) { string[] pc = config.Key.Split( '|' ); platforms[pc[1]] = true; configs[pc[0]] = true; } platformsEnum = Path.GetFileNameWithoutExtension( projectFileName ).ToLower() + "_" + guid + "_" + platformsEnum; configsEnum = Path.GetFileNameWithoutExtension( projectFileName ).ToLower() + "_" + guid + "_" + configsEnum; // classBuilder.AddProperty( "subsln", typeof( SlnProject ) ); //Add platforms { EnumBuilder projectEnum = classBuilder.AddEnum( platformsEnum ); projectEnum.Add( "None" ); val = 0; foreach( var p in platforms ) { string name = p.Key.Replace( " ", "" ); projectEnum.Add( name, 1<