You are viewing a plain text version of this content. The canonical link for it is here.
Posted to nmaven-commits@incubator.apache.org by si...@apache.org on 2007/02/23 22:54:04 UTC

svn commit: r511157 - in /incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src: main/csharp/Core/ main/csharp/Core/Impl/ test/csharp/Core/ test/csharp/Core/Impl/

Author: sisbell
Date: Fri Feb 23 14:54:03 2007
New Revision: 511157

URL: http://svn.apache.org/viewvc?view=rev&rev=511157
Log:
Handles generating Solution files and project files. API more flexible. Still contains some hard-coded values.

Added:
    incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/main/csharp/Core/IProjectGenerator.cs
    incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/main/csharp/Core/IProjectReference.cs
    incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/main/csharp/Core/IProjectRepository.cs
    incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/main/csharp/Core/Impl/ProjectGeneratorImpl.cs
    incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/main/csharp/Core/Impl/ProjectReferenceImpl.cs
    incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/main/csharp/Core/Impl/ProjectRepositoryImpl.cs
    incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/test/csharp/Core/
    incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/test/csharp/Core/Impl/
    incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/test/csharp/Core/Impl/NMavenContextImplTest.cs
Removed:
    incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/main/csharp/Core/Impl/NMavenContextImpl.cs
    incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/main/csharp/Core/NMavenContext.cs

Added: incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/main/csharp/Core/IProjectGenerator.cs
URL: http://svn.apache.org/viewvc/incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/main/csharp/Core/IProjectGenerator.cs?view=auto&rev=511157
==============================================================================
--- incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/main/csharp/Core/IProjectGenerator.cs (added)
+++ incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/main/csharp/Core/IProjectGenerator.cs Fri Feb 23 14:54:03 2007
@@ -0,0 +1,24 @@
+using System;
+using System.IO;
+using System.Collections.Generic;
+using NMaven.Model;
+
+namespace NMaven.Core
+{
+	/// <summary>
+	/// Description of Interface1.
+	/// </summary>
+	public interface IProjectGenerator
+	{
+		
+		IProjectReference generateProjectFor(NMaven.Model.Model model, 
+		                            DirectoryInfo sourceFileDirectory,
+		                            string projectFileName,
+		                            List<IProjectReference> projectReferences);
+		
+		void generateSolutionFor(List<IProjectReference> projectReferences);
+		
+		NMaven.Model.Model createPomModelFor(string fileName);
+		
+	}
+}

Added: incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/main/csharp/Core/IProjectReference.cs
URL: http://svn.apache.org/viewvc/incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/main/csharp/Core/IProjectReference.cs?view=auto&rev=511157
==============================================================================
--- incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/main/csharp/Core/IProjectReference.cs (added)
+++ incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/main/csharp/Core/IProjectReference.cs Fri Feb 23 14:54:03 2007
@@ -0,0 +1,30 @@
+
+using System;
+using System.IO;
+
+namespace NMaven.Core
+{
+	/// <summary>
+	/// Description of IProjectReference.
+	/// </summary>
+	public interface IProjectReference
+	{
+		FileInfo CsProjFile
+		{
+			get;
+			set;
+		}
+		
+		string ProjectName
+		{
+			get;
+			set;
+		}
+		
+		Guid ProjectGuid
+		{
+			get;
+			set;
+		}
+	}
+}

Added: incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/main/csharp/Core/IProjectRepository.cs
URL: http://svn.apache.org/viewvc/incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/main/csharp/Core/IProjectRepository.cs?view=auto&rev=511157
==============================================================================
--- incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/main/csharp/Core/IProjectRepository.cs (added)
+++ incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/main/csharp/Core/IProjectRepository.cs Fri Feb 23 14:54:03 2007
@@ -0,0 +1,17 @@
+
+using System;
+using System.Collections.Generic;
+
+namespace NMaven.Core
+{
+	/// <summary>
+	/// Description of IProjectRepositorycs.
+	/// </summary>
+	public interface IProjectRepository
+	{
+		List<IProjectObjectModel> getProjectObjectModelsFor(NMaven.Model.Model rootPom);
+		
+		void init(IProjectGenerator projectGenerator);
+		
+	}
+}

Added: incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/main/csharp/Core/Impl/ProjectGeneratorImpl.cs
URL: http://svn.apache.org/viewvc/incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/main/csharp/Core/Impl/ProjectGeneratorImpl.cs?view=auto&rev=511157
==============================================================================
--- incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/main/csharp/Core/Impl/ProjectGeneratorImpl.cs (added)
+++ incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/main/csharp/Core/Impl/ProjectGeneratorImpl.cs Fri Feb 23 14:54:03 2007
@@ -0,0 +1,273 @@
+using System;
+using NMaven.Core;
+using NMaven.Model;
+using System.IO;
+using Microsoft.Build.BuildEngine;
+using System.Xml.Serialization;
+using System.Collections.Generic;
+using System.Reflection;
+using System.Text;
+
+namespace NMaven.Core.Impl
+{
+	/// <summary>
+	/// Description of ProjectGeneratorImpl.
+	/// </summary>
+	public class ProjectGeneratorImpl : IProjectGenerator
+	{
+		
+		public ProjectGeneratorImpl()
+		{
+		}
+		
+	    public IProjectReference generateProjectFor(NMaven.Model.Model model, 
+		                                  DirectoryInfo sourceFileDirectory,
+		                                  string projectFileName,
+		                                  List<IProjectReference> projectReferences)
+	    {		
+			Guid projectGuid = Guid.NewGuid();
+			
+			if(projectReferences == null) projectReferences = new List<IProjectReference>();
+			Project project = getProjectFromPomModel(model, sourceFileDirectory, projectFileName, projectGuid, 
+			                                         @"..\..\..\target\bin\Debug\", projectReferences);
+			FileInfo fileInfo = new FileInfo(sourceFileDirectory.FullName + @"\" + projectFileName + ".csproj");
+		    project.Save(fileInfo.FullName);	
+		    
+		    IProjectReference projectReference = new ProjectReferenceImpl();
+		    projectReference.CsProjFile = fileInfo;
+		    projectReference.ProjectGuid = projectGuid;
+		    projectReference.ProjectName = projectFileName;
+			return projectReference;	    	
+	    }
+		
+		public void generateSolutionFor(List<IProjectReference> projectReferences)
+		{
+			TextWriter writer = 
+				new StreamWriter(@"C:\Documents and Settings\shane\nmaven-apache\SI_IDE\assemblies\test.sln", false, System.Text.Encoding.UTF8);
+			writer.WriteLine("");
+			writer.WriteLine("Microsoft Visual Studio Solution File, Format Version 9.00");
+			writer.WriteLine("# Visual Studio 2005");
+			writer.WriteLine("# SharpDevelop 2.1.0.2376");
+
+			Guid solutionGuid = Guid.NewGuid();
+			foreach(IProjectReference projectReference in projectReferences) 
+			{
+				writer.Write("Project(\"{");
+				writer.Write("FAE04EC0-301F-11D3-BF4B-00C04F79EFBC");
+				writer.Write("}\") = \"");
+				writer.Write(projectReference.ProjectName);
+				writer.Write("\", \"");
+				writer.Write(projectReference.CsProjFile.FullName);
+				writer.Write("\", \"{");
+				writer.Write(projectReference.ProjectGuid.ToString());
+				writer.WriteLine("}\"");
+				writer.WriteLine("EndProject");
+				
+			}
+			writer.Flush();
+			writer.Close();
+		}
+					
+		public NMaven.Model.Model createPomModelFor(string fileName)
+		{
+			TextReader reader = new StreamReader(fileName);
+		    XmlSerializer serializer = new XmlSerializer(typeof(NMaven.Model.Model));
+			return (NMaven.Model.Model) serializer.Deserialize(reader);	
+		}
+		
+		private Project createProjectFor(string fileName) 
+		{
+            Engine engine = new Engine(@"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727");
+            Project project = new Project(engine);
+            project.Load(@fileName);
+            return project;
+		}
+		
+
+		private Project getProjectFromPomModel(NMaven.Model.Model model, 
+		                                       DirectoryInfo sourceFileDirectory,
+		                                       string assemblyName,
+		                                       Guid projectGuid,
+		                                       string assemblyOutputPath,
+		                                       List<IProjectReference> projectReferences)
+		{
+            Engine engine = new Engine(@"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727");
+            Project project = new Project(engine);
+            
+            
+            //Main Properties
+            BuildPropertyGroup groupProject = project.AddNewPropertyGroup(false);
+            groupProject.AddNewProperty("ProjectGuid", "{" + projectGuid.ToString() + "}");
+            BuildProperty buildProperty = groupProject.AddNewProperty("Configuration", "Debug");
+            buildProperty.Condition = " '$(Configuration)' == '' ";
+            groupProject.AddNewProperty("RootNameSpace", model.groupId);
+            groupProject.AddNewProperty("AssemblyName", assemblyName);
+            groupProject.AddNewProperty("OutputType", getOutputType(model.packaging));
+            
+            //Debug Properties
+            groupProject = project.AddNewPropertyGroup(false);
+            buildProperty.Condition = " '$(Configuration)' == '' ";
+            groupProject.AddNewProperty( "OutputPath", assemblyOutputPath, false);
+            
+            project.AddNewImport(@"$(MSBuildBinPath)\Microsoft.CSharp.Targets", null);
+
+            addProjectDependencies(project, model, sourceFileDirectory);
+            addFoldersToProject(project, null, sourceFileDirectory, sourceFileDirectory);
+            addClassFilesToProject(project, null, sourceFileDirectory, sourceFileDirectory);
+            addProjectReferences(project, assemblyName, projectReferences);
+			return project;
+			
+		}
+		
+		private void addProjectReferences(Project project, string projectName, List<IProjectReference> projectReferences)
+		{
+			BuildItemGroup itemGroup = project.AddNewItemGroup();
+			foreach(IProjectReference projectReference in projectReferences)
+			{
+				BuildItem buildItem = itemGroup.AddNewItem("ProjectReference", projectReference.CsProjFile.FullName);
+				buildItem.SetMetadata("Project", "{" + projectReference.ProjectGuid.ToString() + "}");
+				buildItem.SetMetadata("Name", projectName);		
+			}
+		}
+				
+		private void addFoldersToProject(Project project, BuildItemGroup folderGroup, DirectoryInfo rootDirectory, DirectoryInfo sourceFileDirectory) 
+		{
+            DirectoryInfo[] directoryInfos = rootDirectory.GetDirectories();
+            if(directoryInfos != null && directoryInfos.Length > 0)
+            {              	
+            	if(folderGroup == null) folderGroup = project.AddNewItemGroup();
+            	
+            	foreach(DirectoryInfo di in directoryInfos) 
+            	{
+              		if(di.FullName.Contains(".svn") || di.FullName.Contains(@"obj") || di.FullName.Contains(@"bin"))
+    					continue;   
+            		folderGroup.AddNewItem("Folder", di.FullName.Substring(sourceFileDirectory.FullName.Length));
+                	addFoldersToProject(project, folderGroup, di, sourceFileDirectory);
+            	}           	
+            }			
+		}
+		
+		private void addClassFilesToProject(Project project, BuildItemGroup compileGroup, DirectoryInfo rootDirectory, DirectoryInfo sourceFileDirectory) 
+		{
+	        DirectoryInfo[] directoryInfos = rootDirectory.GetDirectories();
+            if(directoryInfos != null && directoryInfos.Length > 0)
+            {
+            	if(compileGroup == null) compileGroup = project.AddNewItemGroup();
+            	
+            	foreach(DirectoryInfo di in directoryInfos) 
+            	{  
+              		if(di.FullName.Contains(".svn") || di.FullName.Contains("obj") || di.FullName.Contains("bin"))
+    					continue;       			
+	            	foreach(FileInfo fileInfo in di.GetFiles()) 
+	            	{
+	            		BuildItem buildItem = 
+	            			compileGroup.AddNewItem("Compile", 
+	            			                        fileInfo.FullName.Substring(sourceFileDirectory.FullName.Length));
+	            		//buildItem.SetMetadata("Link", fileInfo.FullName.Substring(sourcedir.FullName.Length + 1));
+	            	}            		
+                	addClassFilesToProject(project, compileGroup, di, sourceFileDirectory);
+            	}           	
+            }				
+		}
+		
+		private void addProjectDependencies(Project project, NMaven.Model.Model model, DirectoryInfo sourceFileDirectory) 
+		{
+			
+			BuildItemGroup group = project.AddNewItemGroup();
+			group.AddNewItem("Reference", "System.Xml");
+			
+			foreach(Dependency dependency in model.dependencies) {
+				String repoPath = Environment.GetEnvironmentVariable("HOMEDRIVE") 
+				    + Environment.GetEnvironmentVariable("HOMEPATH") 
+					+ @"\.m2\repository\" + dependency.groupId.Replace(".", "\\")
+					+ "\\" + dependency.artifactId + "\\" + dependency.version + "\\" + dependency.artifactId + ".dll";
+				BuildItem buildItem = group.AddNewItem("Reference", dependency.artifactId);
+				if(!dependency.GetType().Equals("gac")) buildItem.SetMetadata("HintPath", repoPath, false);
+			}
+			
+	        DirectoryInfo[] directoryInfos = sourceFileDirectory.GetDirectories();
+            
+            ClassParser classParser = new ClassParser();
+            List<FileInfo> fileInfos = new List<FileInfo>();
+            addFileInfosFromSourceDirectories(sourceFileDirectory, fileInfos);
+            List<string> dependencies = classParser.getDependencies(fileInfos);
+            foreach(string dependency in dependencies)
+            {
+            	try {
+            		DirectoryInfo fileInfo = new DirectoryInfo(@"C:\WINDOWS\assembly\GAC_MSIL\" + dependency);
+            		if(fileInfo.Exists) {
+            			group.AddNewItem("Reference", dependency);	
+            		} else 
+            			Console.WriteLine("FNE: " + fileInfo.FullName);
+            	}
+            	catch(Exception e) 
+            	{
+            		Console.WriteLine(e.Message);
+            	}
+            	
+            }
+		}
+		
+		
+		private void addFileInfosFromSourceDirectories(DirectoryInfo sourceFileDirectory, List<FileInfo> fileInfos ) 
+		{
+            DirectoryInfo[] directoryInfos = sourceFileDirectory.GetDirectories();
+            if(directoryInfos != null && directoryInfos.Length > 0)
+            {  	
+            	foreach(DirectoryInfo di in directoryInfos) 
+            	{  
+              		if(di.FullName.Contains(".svn") || di.FullName.Contains("obj") || di.FullName.Contains("bin"))
+              			continue;
+              		fileInfos.AddRange(di.GetFiles());
+              		addFileInfosFromSourceDirectories(di, fileInfos);
+            	}           	
+            }
+		}
+		
+		private string getOutputType(String type)
+		{
+			if (type.Equals("library")) return "Library";
+			else if (type.Equals("exe")) return "Exe";
+			else if (type.Equals("winexe")) return "WinExe";
+			return null;
+		}		
+		
+		private class ClassParser {
+			
+			public List<string> getDependencies(List<FileInfo> fileInfos) 
+			{
+				List<string> dependencies = new List<string>();
+				foreach(FileInfo fileInfo in fileInfos) 
+				{
+					try 
+			        {
+			            using (StreamReader sr = new StreamReader(fileInfo.FullName)) 
+			            {
+			                String line;
+			                while ((line = sr.ReadLine()) != null) 
+			                {
+			                	if (line.StartsWith("namespace")) break;
+			                	if (line.StartsWith("//")) continue;
+			                	if (line.StartsWith("using")) {
+			                		string[] tokens = line.Remove(line.Length - 1).Split(new char[1]{' '});
+			                		if(!dependencies.Contains(tokens[1]))
+			                		{
+			                			dependencies.Add(tokens[1]);
+			                		}			                		
+			                	}
+			                }
+			            }
+			        }
+			        catch (Exception e) 
+			        {
+			            Console.WriteLine(e.Message);
+			        }
+
+				}
+				
+				return dependencies;
+			}
+		
+		}		
+	}
+}

Added: incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/main/csharp/Core/Impl/ProjectReferenceImpl.cs
URL: http://svn.apache.org/viewvc/incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/main/csharp/Core/Impl/ProjectReferenceImpl.cs?view=auto&rev=511157
==============================================================================
--- incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/main/csharp/Core/Impl/ProjectReferenceImpl.cs (added)
+++ incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/main/csharp/Core/Impl/ProjectReferenceImpl.cs Fri Feb 23 14:54:03 2007
@@ -0,0 +1,61 @@
+using System;
+using System.IO;
+
+namespace NMaven.Core.Impl
+{
+	/// <summary>
+	/// Description of ProjectReferenceImpl.
+	/// </summary>
+	public class ProjectReferenceImpl : IProjectReference
+	{
+		
+		private FileInfo csProjFile;
+		
+		private string projectName;
+		
+		private Guid projectGuid;
+		
+		public ProjectReferenceImpl()
+		{
+		}
+		
+		public FileInfo CsProjFile
+		{
+			get
+			{
+				return csProjFile;	
+			}
+			
+			set
+			{
+				csProjFile = value;	
+			}
+		}
+		
+		public string ProjectName
+		{
+			get
+			{
+				return projectName;
+			}
+			
+			set
+			{
+				projectName = value;
+			}
+		}
+		
+		public Guid ProjectGuid
+		{
+			get
+			{
+				return projectGuid;
+			}
+			
+			set
+			{
+				projectGuid = value;
+			}
+		}
+	}
+}

Added: incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/main/csharp/Core/Impl/ProjectRepositoryImpl.cs
URL: http://svn.apache.org/viewvc/incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/main/csharp/Core/Impl/ProjectRepositoryImpl.cs?view=auto&rev=511157
==============================================================================
--- incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/main/csharp/Core/Impl/ProjectRepositoryImpl.cs (added)
+++ incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/main/csharp/Core/Impl/ProjectRepositoryImpl.cs Fri Feb 23 14:54:03 2007
@@ -0,0 +1,60 @@
+using System;
+using NMaven.Core;
+using NMaven.Model;
+using System.IO;
+using Microsoft.Build.BuildEngine;
+using System.Xml.Serialization;
+using System.Collections.Generic;
+using System.Reflection;
+
+namespace NMaven.Core.Impl
+{
+	/// <summary>
+	/// Description of ProjectRepositoryImpl.
+	/// </summary>
+	public class ProjectRepositoryImpl : IProjectRepository
+	{
+		
+		private IProjectGenerator projectGenerator;
+		
+		private string basedir = @"C:\Documents and Settings\shane\nmaven-apache\SI_IDE\assemblies";
+		
+		public ProjectRepositoryImpl()
+		{
+		}
+		
+		public List<IProjectObjectModel> getProjectObjectModelsFor(NMaven.Model.Model rootPom) 
+		{	
+			List<IProjectObjectModel> projectObjectModels = new List<IProjectObjectModel>();
+			if(rootPom.packaging.Equals("pom"))
+			{
+				foreach(String module in rootPom.modules)
+				{
+					NMaven.Model.Model model = createPomModelFor(basedir + @"\" + module + @"\pom.xml");
+				}					   	
+			} 
+			else
+			{
+				Dependency[] dependencies = rootPom.dependencies;
+				foreach(Dependency dependency in dependencies)
+				{
+					
+				}
+			}
+			return projectObjectModels;
+		
+		}
+		
+		public void init(IProjectGenerator projectGenerator)
+		{
+			this.projectGenerator = projectGenerator;	
+		}
+		
+		private NMaven.Model.Model createPomModelFor(string fileName)
+		{
+			TextReader reader = new StreamReader(fileName);
+		    XmlSerializer serializer = new XmlSerializer(typeof(NMaven.Model.Model));
+			return (NMaven.Model.Model) serializer.Deserialize(reader);	
+		}
+	}
+}

Added: incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/test/csharp/Core/Impl/NMavenContextImplTest.cs
URL: http://svn.apache.org/viewvc/incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/test/csharp/Core/Impl/NMavenContextImplTest.cs?view=auto&rev=511157
==============================================================================
--- incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/test/csharp/Core/Impl/NMavenContextImplTest.cs (added)
+++ incubator/nmaven/branches/SI_IDE/assemblies/NMaven.Core/src/test/csharp/Core/Impl/NMavenContextImplTest.cs Fri Feb 23 14:54:03 2007
@@ -0,0 +1,46 @@
+using NUnit.Framework;
+using System;
+using System.IO;
+using NMaven.Core.Impl;
+using NMaven.Model;
+using Microsoft.Build.BuildEngine;
+using System.Collections;
+using System.Collections.Generic;
+
+namespace NMaven.Core.Impl
+{
+ [TestFixture]
+ public class TestNMavenContextImplTest
+ {
+ [Test]
+	 public void TestMethod()
+	 {
+	 	IProjectGenerator projectGenerator = new ProjectGeneratorImpl();
+	 	
+	 	NMaven.Model.Model model = projectGenerator.createPomModelFor(@"..\..\..\pom.xml");
+	 	Console.WriteLine(model.artifactId);
+	 	
+	 	IProjectReference projectReference = 
+	 		projectGenerator.generateProjectFor(model,
+	 	                                    new DirectoryInfo(@"C:\Documents and Settings\shane\nmaven-apache\SI_IDE\assemblies\NMaven.Core\src\main\csharp\"), 
+	 	                                    model.artifactId + "T1", null);
+	 	List<IProjectReference> projectReferences = new List<IProjectReference>();
+	 	projectReferences.Add(projectReference);
+	    
+	 	IProjectReference testReference = projectGenerator.generateProjectFor(model,
+	 	                                    new DirectoryInfo(@"C:\Documents and Settings\shane\nmaven-apache\SI_IDE\assemblies\NMaven.Core\src\test\csharp\"), 
+	 	                                    model.artifactId + "-Test1", projectReferences);
+	 	projectReferences.Add(testReference);
+	 	
+	 	
+	 	projectGenerator.generateSolutionFor(projectReferences);
+	
+	}
+	 
+ [Test]
+ public void TestA()
+ {
+
+ }
+}
+}