IProject CreateCSharpProject()
		{
			var createInfo = new ProjectCreateInformation();
			createInfo.Solution = new Solution(new MockProjectChangeWatcher());
			createInfo.OutputProjectFileName = @"d:\projects\MyProject\MyProject.csproj";
			return new MSBuildBasedProject(createInfo);
		}
示例#2
0
		public WixProject(ProjectCreateInformation info)
			: base(info)
		{
			SetProperty("OutputType", "Package");
			AddWixTargetsPathProperties();
			AddImport(DefaultTargetsFile, null);
		}
示例#3
0
		public NewProjectsCreated(
			ProjectCreateInformation createInfo,
			OpenMSBuildProjects openProjects)
		{
			this.createInfo = createInfo;
			this.openProjects = openProjects;
		}
		public void SetUpFixture()
		{
			WixBindingTestsHelper.InitMSBuildEngine();
			
			// create the project.
			ProjectCreateInformation info = new ProjectCreateInformation();
			info.Solution = new Solution();
			info.ProjectName = "Test";
			info.OutputProjectFileName = @"C:\Projects\Test\Test.wixproj";

			wixProject = new WixProjectWithOverriddenSave(info);
			
			// Add wix library item.
			wixLibraryItem = new WixLibraryProjectItem(wixProject);
			wixLibraryItem.Include = @"..\..\first.wixlib";
			ProjectService.AddProjectItem(wixProject, wixLibraryItem);
			
			// Run Initialize on the WixLibraryFolderNode, which is 
			// equivalent to expanding the node, so it adds it children. Cannot
			// call ExtTreeNode.Expanding since this relies on the tree node
			// being visible.
			WixLibraryFolderNodeTester nodeTester = new WixLibraryFolderNodeTester(wixProject);
			nodeTester.RunInitialize();
			
			wixLibraryFolderNode = (WixLibraryFolderNode)nodeTester;
			wixLibraryNode = (WixLibraryNode)wixLibraryFolderNode.Nodes[0];
		}
		public static MSBuildBasedProject CreateCSharpProject()
		{
			var createInfo = new ProjectCreateInformation();
			createInfo.Solution = new Solution(MockRepository.GenerateStub<IProjectChangeWatcher>());
			createInfo.OutputProjectFileName = @"d:\projects\MyProject\MyProject.csproj";
			return new MSBuildBasedProject(createInfo);
		}
		protected override void OnInitializeFromTemplate (ProjectCreateInformation projectCreateInfo, XmlElement projectOptions)
		{
			base.OnInitializeFromTemplate (projectCreateInfo, projectOptions);
			languageName = projectOptions.GetAttribute ("language");

			string templateDefaultNamespace = GetDefaultNamespace (projectCreateInfo, projectOptions);
			DefaultNamespace = templateDefaultNamespace ?? projectCreateInfo.ProjectName;
		}
示例#7
0
		public static TestableProject CreateProject(string fileName, string projectName)
		{
			var createInfo = new ProjectCreateInformation();
			createInfo.Solution = new Solution(null);
			createInfo.ProjectName = projectName;
			createInfo.OutputProjectFileName = fileName;
			return new TestableProject(createInfo);
		}
示例#8
0
		public static TestableProject CreateProject()
		{
			var info = new ProjectCreateInformation();
			info.Solution = new Solution();
			info.OutputProjectFileName = @"d:\projects\MyProject\MyProject.csproj";
			info.ProjectName = "MyProject";
			return new TestableProject(info);
		}
		void RunCommandWithProjectCreateInfoAsOwner(List<TestableProject> projects)
		{
			var createInfo = new ProjectCreateInformation(projects);
			createInfo.Solution = projects[0].ParentSolution;
			
			command.FakeProjectService.FakeOpenProjects.AddRange(projects);
			
			RunCommandWithProjectCreateInfoAsOwner(createInfo);
		}
		public void SetUpFixture()
		{
			projectBinding = new RubyProjectBinding();
			ProjectCreateInformation createInfo = new ProjectCreateInformation();
			createInfo.ProjectName = "Ruby";
			createInfo.OutputProjectFileName = @"C:\Projects\Ruby.rbproj";
			createInfo.Solution = new Solution();
			project = projectBinding.CreateProject(createInfo) as RubyProject;
		}
		public void IsTestProjectWhenPassedRubyPythonProjectReturnsTrue()
		{
			ProjectCreateInformation createInfo = new ProjectCreateInformation();
			createInfo.Solution = new Solution(new MockProjectChangeWatcher());
			createInfo.OutputProjectFileName = @"C:\projects\test.rbproj";
			RubyProject project = new RubyProject(createInfo);
			
			Assert.IsTrue(testFramework.IsTestProject(project));
		}
示例#12
0
		public FSharpProject(ProjectCreateInformation info) : base(info)
		{
			try {
				base.AddImport(@"$(MSBuildExtensionsPath32)\..\Microsoft F#\v4.0\Microsoft.FSharp.Targets", null);
				base.ReevaluateIfNecessary(); // provoke exception if import is invalid
			} catch (InvalidProjectFileException ex) {
				throw new ProjectLoadException("Please ensure that the F# compiler is installed on your computer.\n\n" + ex.Message, ex);
			}
		}
示例#13
0
		protected override void Create(ProjectCreateInformation information)
		{
			base.Create(information);
			
			SetProperty("Debug", null, "DefineConstants", "DEBUG;TRACE",
			            PropertyStorageLocations.ConfigurationSpecific, false);
			SetProperty("Release", null, "DefineConstants", "TRACE",
			            PropertyStorageLocations.ConfigurationSpecific, false);
		}
		public void SetUpFixture()
		{
			projectBinding = new PythonProjectBinding();
			ProjectCreateInformation createInfo = new ProjectCreateInformation();
			createInfo.ProjectName = "Python";
			createInfo.OutputProjectFileName = @"C:\Projects\Python.pyproj";
			createInfo.Solution = new Solution(new MockProjectChangeWatcher());
			project = projectBinding.CreateProject(createInfo) as PythonProject;
		}
		public void IsTestProjectReturnsTrueForPythonProject()
		{
			ProjectCreateInformation createInfo = new ProjectCreateInformation();
			createInfo.Solution = new Solution();
			createInfo.OutputProjectFileName = @"C:\projects\test.pyproj";
			PythonProject project = new PythonProject(createInfo);
			
			Assert.IsTrue(testFramework.IsTestProject(project));
		}
示例#16
0
		public LSharpProject(ProjectCreateInformation info)
			: base(info)
		{
			Init();
			
			SetProperty("Debug", null, "DefineConstants", "DEBUG;TRACE",
			            PropertyStorageLocations.ConfigurationSpecific, false);
			SetProperty("Release", null, "DefineConstants", "TRACE",
			            PropertyStorageLocations.ConfigurationSpecific, false);
		}
		public void SetUpFixture()
		{
			info = new ProjectCreateInformation();
			info.Solution = new Solution(new MockProjectChangeWatcher());
			info.ProjectName = "Test";
			info.OutputProjectFileName = @"C:\Projects\Test\Test.rbproj";
			info.RootNamespace = "Test";

			project = new RubyProject(info);
		}
		protected override IProject CreateTestProject()
		{
			ProjectCreateInformation info = new ProjectCreateInformation();
			info.ProjectName = "Test";
			info.RootNamespace = "Test";
			info.OutputProjectFileName = Path.Combine(Path.GetTempPath(), "Test.vbproj");
			info.Solution = this.Solution;
			
			VBNetProject p = new VBNetProject(info);
			return p;
		}
		public void SetUpFixture()
		{
			WixBindingTestsHelper.InitMSBuildEngine();
			
			info = new ProjectCreateInformation();
			info.Solution = new Solution();
			info.ProjectName = "Test";
			info.OutputProjectFileName = @"C:\Projects\Test\Test.wixproj";
			info.RootNamespace = "Test";

			project = new WixProject(info);
		}
示例#20
0
		public WixProject(ProjectCreateInformation info)
			: base(info)
		{
			SetProperty("OutputType", "Package");
			
			string wixToolPath = @"$(SharpDevelopBinPath)\Tools\Wix";
			AddGuardedProperty("WixToolPath", wixToolPath);
			AddGuardedProperty("WixTargetsPath", @"$(WixToolPath)\wix.targets");
			AddGuardedProperty("WixTasksPath", @"$(WixToolPath)\WixTasks.dll");
			
			this.AddImport(DefaultTargetsFile, null);
		}
		SnippetCompilerProject(ProjectCreateInformation createInfo)
			: base(createInfo)
		{
			this.Parent = createInfo.Solution;
			this.AddImport(DefaultTargetsFile, null);
			
			SetProperty("Debug", null, "CheckForOverflowUnderflow", "True", PropertyStorageLocations.ConfigurationSpecific, true);
			SetProperty("Release", null, "CheckForOverflowUnderflow", "False", PropertyStorageLocations.ConfigurationSpecific, true);
			
			SetProperty("Debug", null, "DefineConstants", "DEBUG;TRACE", PropertyStorageLocations.ConfigurationSpecific, false);
			SetProperty("Release", null, "DefineConstants", "TRACE", PropertyStorageLocations.ConfigurationSpecific, false);
		}
示例#22
0
		public VBNetProject(ProjectCreateInformation info)
			: base(info)
		{
			InitVB();
			
			this.AddImport(DefaultTargetsFile, null);
			
			SetProperty("Debug", null, "DefineConstants", "DEBUG=1,TRACE=1",
			            PropertyStorageLocations.ConfigurationSpecific, true);
			SetProperty("Release", null, "DefineConstants", "TRACE=1",
			            PropertyStorageLocations.ConfigurationSpecific, true);
		}
		public void SetUpFixture()
		{
			PythonMSBuildEngineHelper.InitMSBuildEngine();
			
			info = new ProjectCreateInformation();
			info.Solution = new Solution();
			info.ProjectName = "Test";
			info.OutputProjectFileName = @"C:\Projects\Test\Test.pyproj";
			info.RootNamespace = "Test";

			project = new PythonProject(info);
		}
示例#24
0
		public CppProject(ProjectCreateInformation info)
			: base(info)
		{
			try {
				AddImport(DefaultPropsFile, null);
				AddImport(PropsFile, null);
				AddImport(DefaultTargetsFile, null);
				AddProjectConfigurationsItemGroup();
				base.ReevaluateIfNecessary(); // provoke exception if import is invalid
			} catch (InvalidProjectFileException ex) {
				throw new ProjectLoadException("Please ensure that the Windows SDK is installed on your computer.\n\n" + ex.Message, ex);
			}
		}
示例#25
0
		/// <summary>
		/// Creates a WixProject that contains no WixObject or WixLibrary items.
		/// </summary>
		public static WixProject CreateEmptyWixProject()
		{
			// Make sure the MSBuildEngine is initialised correctly.
			InitMSBuildEngine();
			
			// create the project.
			ProjectCreateInformation info = new ProjectCreateInformation();
			info.Solution = new Solution(new MockProjectChangeWatcher());
			info.ProjectName = "Test";
			info.OutputProjectFileName = @"C:\Projects\Test\Test.wixproj";

			return new DummyWixProject(info);
		}
示例#26
0
		public AimProject(ProjectCreateInformation info) : base(info)
		{
			// Inicializa a classe
			Init();
			// Adiciona os TargetsFile
			AddImport(@"$(MSBuildBinPath)\Microsoft.CSharp.Targets", null);
			// Inclui a referência ao iView durante a criação de um novo projeto
//			Assembly aimAssembly = Assembly.GetAssembly(typeof(AimProject));
//			string aimAssemblyPath = Path.GetDirectoryName(aimAssembly.Location);
//			string aimAssemblyFullName = Path.Combine(aimAssemblyPath, "Aimirim.iView.dll");
//			ReferenceProjectItem rpi = new ReferenceProjectItem(this, "Aimirim.iView");
//			rpi.HintPath = aimAssemblyFullName;
//			ProjectService.AddProjectItem(this, rpi);
		}
示例#27
0
		protected virtual IProject CreateProject(DirectoryName targetProjectDirectory, IProject sourceProject)
		{
			ProjectBindingDescriptor descriptor = ProjectBindingService.GetCodonPerLanguageName(TargetLanguageName);
			if (descriptor == null || descriptor.Binding == null)
				throw new InvalidOperationException("Cannot get Language Binding for " + TargetLanguageName);
			
			string projectName = sourceProject.Name + ".Converted";
			FileName fileName = FileName.Create(Path.Combine(targetProjectDirectory, projectName + descriptor.ProjectFileExtension));
			
			ProjectCreateInformation info = new ProjectCreateInformation(sourceProject.ParentSolution, fileName);
			info.RootNamespace = sourceProject.RootNamespace;
			
			return descriptor.Binding.CreateProject(info);
		}
示例#28
0
		protected override void Create(ProjectCreateInformation information)
		{
			base.Create(information);
			this.AddImport(DefaultTargetsFile, null);
			SetProperty("Debug", null, "CheckForOverflowUnderflow", "True",
			            PropertyStorageLocations.ConfigurationSpecific, true);
			SetProperty("Release", null, "CheckForOverflowUnderflow", "False",
			            PropertyStorageLocations.ConfigurationSpecific, true);
			
			SetProperty("Debug", null, "DefineConstants", "DEBUG;TRACE",
			            PropertyStorageLocations.ConfigurationSpecific, false);
			SetProperty("Release", null, "DefineConstants", "TRACE",
			            PropertyStorageLocations.ConfigurationSpecific, false);
		}
		public void SetUp()
		{
			PythonMSBuildEngineHelper.InitMSBuildEngine();
			
			ProjectCreateInformation info = new ProjectCreateInformation();
			info.Solution = new Solution(new MockProjectChangeWatcher());
			info.ProjectName = "Test";
			info.OutputProjectFileName = @"C:\Projects\Test\Test.pyproj";
			info.RootNamespace = "Test";
			
			project = new PythonProject(info);
			
			appSettingsPanel = new DerivedApplicationSettingsPanel();
			appSettingsPanel.Owner = project;
			appSettingsPanel.LoadPanelContents();
		}
示例#30
0
		public static TestableProject CreateTestProject(string name)
		{
			Solution solution = new Solution(new MockProjectChangeWatcher());
			solution.FileName = @"d:\projects\Test\TestSolution.sln";
			
			ProjectCreateInformation createInfo = new ProjectCreateInformation();
			createInfo.Solution = solution;
			createInfo.ProjectName = name;
			createInfo.SolutionPath = @"d:\projects\Test";
			createInfo.ProjectBasePath = @"d:\projects\Test\TestProject";
			createInfo.OutputProjectFileName = @"d:\projects\Test\TestProject\TestProject.csproj";
			
			var project = new TestableProject(createInfo);
			project.Parent = solution;
			return project;
		}
 public Task InitializeItem(SolutionFolderItem policyParent, ProjectCreateInformation projectCreateInformation, string defaultLanguage, SolutionItem item)
 {
     return(Task.CompletedTask);
 }
示例#32
0
        public CProject(ProjectCreateInformation info,
                        XmlElement projectOptions, string language)
        {
            Init();
            string binPath = ".";

            if (info != null)
            {
                Name    = info.ProjectName;
                binPath = info.BinPath;
            }

            switch (language)
            {
            case "C":
                this.language = Language.C;
                break;

            case "CPP":
                this.language = Language.CPP;
                break;

            case "Objective C":
                this.language = Language.OBJC;
                break;

            case "Objective C++":
                this.language = Language.OBJCPP;
                break;
            }

            Compiler = null;             // use default compiler depending on language

            CProjectConfiguration configuration =
                (CProjectConfiguration)CreateConfiguration("Debug");

            configuration.DefineSymbols = "DEBUG MONODEVELOP";
            configuration.DebugMode     = true;

            Configurations.Add(configuration);

            configuration =
                (CProjectConfiguration)CreateConfiguration("Release");

            configuration.DebugMode         = false;
            configuration.OptimizationLevel = 3;
            configuration.DefineSymbols     = "MONODEVELOP";
            Configurations.Add(configuration);

            foreach (CProjectConfiguration c in Configurations)
            {
                c.OutputDirectory = Path.Combine(binPath, c.Id);
                c.SourceDirectory = info.ProjectBasePath;
                c.Output          = Name;

                if (projectOptions != null)
                {
                    if (projectOptions.Attributes["Target"] != null)
                    {
                        c.CompileTarget = (CBinding.CompileTarget)Enum.Parse(
                            typeof(CBinding.CompileTarget),
                            projectOptions.Attributes["Target"].InnerText);
                    }
                    if (projectOptions.GetAttribute("ExternalConsole") == "True")
                    {
                        c.ExternalConsole    = true;
                        c.PauseConsoleOutput = true;
                    }
                    if (projectOptions.Attributes["PauseConsoleOutput"] != null)
                    {
                        c.PauseConsoleOutput = bool.Parse(
                            projectOptions.Attributes["PauseConsoleOutput"].InnerText);
                    }
                    if (projectOptions.Attributes["CompilerArgs"].InnerText != null)
                    {
                        c.ExtraCompilerArguments = projectOptions.Attributes["CompilerArgs"].InnerText;
                    }
                    if (projectOptions.Attributes["LinkerArgs"].InnerText != null)
                    {
                        c.ExtraLinkerArguments = projectOptions.Attributes["LinkerArgs"].InnerText;
                    }
                }
            }
        }
示例#33
0
 public PythonProject(ProjectCreateInformation info)
     : base(info)
 {
     AddImport(DefaultTargetsFile, null);
 }
示例#34
0
        public void AddPackageReferenceForCreatedProject(Project project, ProjectDescriptor projectDescriptor, ProjectCreateInformation createInfo)
        {
            var packageReference = new PackageReferencesForCreatedProject(project.Name, projectDescriptor.GetPackageReferences(createInfo));

            packageReferencesForCreatedProjects.Add(packageReference);
        }
示例#35
0
 public AspMvcProject(string languageName, ProjectCreateInformation info, XmlElement projectOptions)
     : base(languageName, info, projectOptions)
 {
 }
示例#36
0
        public DProject(ProjectCreateInformation info, XmlElement projectOptions)
        {
            referenceCollection = new DefaultDReferencesCollection(this);
            Init();

            string binPath = ".";

            if (info != null)
            {
                Name = info.ProjectName;

                BaseDirectory = info.ProjectBasePath;

                if (info.BinPath != null)
                {
                    binPath = info.BinPath;
                }
            }

            var compTarget = DCompileTarget.Executable;

            var outputPrefix = "";

            if (projectOptions != null)
            {
                // Set project's target type to the one which has been defined in the project template
                if (projectOptions.Attributes["Target"] != null)
                {
                    compTarget = (DCompileTarget)Enum.Parse(
                        typeof(DCompileTarget),
                        projectOptions.Attributes["Target"].InnerText);
                }

                // Set project's compiler
                if (projectOptions.Attributes["Compiler"] != null)
                {
                    UsedCompilerVendor = projectOptions.Attributes["Compiler"].InnerText;
                }

                // Non Windows-OS require a 'lib' prefix as library name -- like libphobos2.a
                if (compTarget == DCompileTarget.StaticLibrary || compTarget == DCompileTarget.SharedLibrary && !OS.IsWindows)
                {
                    outputPrefix = "lib";
                }
            }

            var libs = new List <string> ();

            if (projectOptions != null)
            {
                foreach (XmlNode lib in projectOptions.GetElementsByTagName("Lib"))
                {
                    if (!string.IsNullOrWhiteSpace(lib.InnerText))
                    {
                        libs.Add(lib.InnerText);
                    }
                }
            }

            // Create a debug configuration
            var cfg = CreateConfiguration("Debug") as DProjectConfiguration;

            cfg.ExtraLibraries.AddRange(libs);
            cfg.DebugMode = true;

            Configurations.Add(cfg);

            // Create a release configuration
            cfg = CreateConfiguration("Release") as DProjectConfiguration;

            cfg.ExtraLibraries.AddRange(libs);
            cfg.DebugMode = false;

            Configurations.Add(cfg);

            // Create unittest configuration
            var unittestConfig = CreateConfiguration("Unittest") as DProjectConfiguration;

            unittestConfig.ExtraLibraries.AddRange(libs);
            unittestConfig.DebugMode    = true;
            unittestConfig.UnittestMode = true;

            Configurations.Add(unittestConfig);

            // Prepare all configurations
            foreach (DProjectConfiguration c in Configurations)
            {
                c.ExternalConsole  = true;
                c.CompileTarget    = compTarget;
                c.OutputDirectory  = Path.Combine(this.GetRelativeChildPath(binPath), c.Id);
                c.ObjectDirectory += Path.DirectorySeparatorChar + c.Id;
                c.Output           = outputPrefix + Name;

                c.UpdateGlobalVersionIdentifiers();

                if (projectOptions != null)
                {
                    // Set extra compiler&linker args
                    if (projectOptions.Attributes ["CompilerArgs"].InnerText != null)
                    {
                        c.ExtraCompilerArguments += projectOptions.Attributes ["CompilerArgs"].InnerText;
                    }
                    if (projectOptions.Attributes ["LinkerArgs"].InnerText != null)
                    {
                        c.ExtraLinkerArguments += projectOptions.Attributes ["LinkerArgs"].InnerText;
                    }

                    if (projectOptions.GetAttribute("ExternalConsole") == "True")
                    {
                        c.ExternalConsole    = true;
                        c.PauseConsoleOutput = true;
                    }
                    if (projectOptions.Attributes ["PauseConsoleOutput"] != null)
                    {
                        c.PauseConsoleOutput = bool.Parse(
                            projectOptions.Attributes ["PauseConsoleOutput"].InnerText);
                    }
                }
            }
        }
示例#37
0
        static ProjectCreateInformation GetItemSpecificCreateInfo(ISolutionItemDescriptor descriptor, ProjectCreateInformation cInfo)
        {
            var entry = descriptor as ICustomProjectCIEntry;

            if (entry != null)
            {
                return(entry.CreateProjectCI(cInfo));
            }

            return(cInfo);
        }
示例#38
0
 static IEnumerable <ISolutionItemDescriptor> GetItemsToCreate(SolutionDescriptor solutionDescriptor, ProjectCreateInformation cInfo)
 {
     foreach (ISolutionItemDescriptor descriptor in solutionDescriptor.EntryDescriptors)
     {
         var projectDescriptor = descriptor as ProjectDescriptor;
         if ((projectDescriptor != null) && !projectDescriptor.ShouldCreateProject(cInfo))
         {
             // Skip.
         }
         else
         {
             yield return(descriptor);
         }
     }
 }
示例#39
0
        public IEnumerable <SolutionItem> CreateProjects(SolutionFolderItem policyParent, ProjectCreateInformation cInfo)
        {
            if (solutionDescriptor.EntryDescriptors.Length == 0)
            {
                throw new InvalidOperationException(GettextCatalog.GetString("Solution template doesn't have any project templates"));
            }

            var solutionEntryItems = new List <SolutionItem> ();

            packageReferencesForCreatedProjects = new List <PackageReferencesForCreatedProject> ();

            foreach (ISolutionItemDescriptor solutionItemDescriptor in GetItemsToCreate(solutionDescriptor, cInfo))
            {
                ProjectCreateInformation itemCreateInfo = GetItemSpecificCreateInfo(solutionItemDescriptor, cInfo);
                itemCreateInfo = new ProjectTemplateCreateInformation(itemCreateInfo, cInfo.ProjectName);
                itemCreateInfo.TemplateInitializationCallback = p => solutionItemDescriptor.InitializeItem(policyParent, itemCreateInfo, this.languagename, p);

                SolutionItem solutionEntryItem = solutionItemDescriptor.CreateItem(itemCreateInfo, this.languagename);
                if (solutionEntryItem != null)
                {
                    SavePackageReferences(solutionEntryItem, solutionItemDescriptor, itemCreateInfo);
                    solutionEntryItems.Add(solutionEntryItem);
                }
            }

            var pDesc    = this.solutionDescriptor.EntryDescriptors.OfType <ProjectDescriptor> ().FirstOrDefault();
            var metadata = new Dictionary <string, string> ();

            metadata ["Id"]       = this.Id;
            metadata ["Name"]     = this.nonLocalizedName;
            metadata ["Language"] = this.LanguageName;
            metadata ["Platform"] = pDesc != null ? pDesc.ProjectType : "Unknown";
            TemplateCounter.Inc(1, null, metadata);

            return(solutionEntryItems);
        }
示例#40
0
        public async Task AddSharedProjectForPCLProject()
        {
            string templateId = "MonoDevelop.CSharp.PortableLibrary";
            var    template   = ProjectTemplate.ProjectTemplates.FirstOrDefault(t => t.Id == templateId);
            var    dir        = Util.CreateTmpDir("AddSharedProjectForPCLProject");
            var    cinfo      = new ProjectCreateInformation {
                ProjectBasePath = Path.Combine(dir, "MyProject"),
                ProjectName     = "MyProject",
                SolutionName    = "Solution",
                SolutionPath    = dir
            };

            var solution = await template.CreateWorkspaceItem(cinfo) as Solution;

            string solutionFileName = Path.Combine(dir, "Solution.sln");
            await solution.SaveAsync(solutionFileName, Util.GetMonitor());

            var pclProject = solution.GetAllProjects().OfType <DotNetProject> ().First();

            // Add NuGet package metadata to PCL project.
            var metadata = new NuGetPackageMetadata();

            metadata.Load(pclProject);
            metadata.Id      = "MyPackage";
            metadata.Authors = "Authors";
            metadata.Owners  = "Owners";
            metadata.Version = "1.2.3";
            metadata.UpdateProject(pclProject);

            // Add another csharp file to the pclProject in a subdirectory.
            string anotherCSharpFileName = pclProject.BaseDirectory.Combine("src", "AnotherClass.cs");

            Directory.CreateDirectory(Path.GetDirectoryName(anotherCSharpFileName));
            File.WriteAllText(anotherCSharpFileName, "class AnotherClass {}");
            pclProject.AddFile(anotherCSharpFileName);
            await pclProject.SaveAsync(Util.GetMonitor());

            // Add platform implementation.
            var viewModel = new TestableAddPlatformImplementationViewModel(pclProject);

            viewModel.CreateAndroidProject = true;
            viewModel.CreateSharedProject  = true;
            viewModel.CreateIOSProject     = true;

            await viewModel.CreateProjects(Util.GetMonitor());

            // Verify projects created as expected.
            solution = (Solution)await Ide.Services.ProjectService.ReadWorkspaceItem(Util.GetMonitor(), solutionFileName);

            pclProject = solution.GetAllProjects().OfType <DotNetProject> ().FirstOrDefault(p => p.Name == "MyProject");

            // Solution contains Shared project.
            var sharedProject = solution.GetAllProjects().OfType <SharedAssetsProject> ().FirstOrDefault(p => p.Name == "MyProject.Shared");

            Assert.AreEqual("MyProject.Shared.shproj", sharedProject.FileName.FileName);

            // PCL project references the Shared project.
            var projectReference = pclProject.References.Single(r => r.ResolveProject(solution) == sharedProject);

            Assert.IsNotNull(projectReference);

            // Solution contains NuGet packaging project.
            var nugetProject = solution.GetAllProjects().FirstOrDefault(p => p.Name == "MyProject.NuGet") as PackagingProject;

            Assert.AreEqual("MyProject.NuGet.nuproj", nugetProject.FileName.FileName);

            // NuGet packaging project references PCL project.
            projectReference = nugetProject.References.Single(r => r.ResolveProject(solution) == pclProject);
            Assert.IsNotNull(projectReference);

            // Android project references shared project
            var androidProject = solution.GetAllProjects().OfType <DotNetProject> ().FirstOrDefault(p => p.Name == "MyProject.Android");

            projectReference = androidProject.References.Single(r => r.ResolveProject(solution) == sharedProject);
            Assert.IsNotNull(projectReference);

            // iOS project references shared project
            var iosProject = solution.GetAllProjects().OfType <DotNetProject> ().FirstOrDefault(p => p.Name == "MyProject.iOS");

            projectReference = iosProject.References.Single(r => r.ResolveProject(solution) == sharedProject);
            Assert.IsNotNull(projectReference);

            // NuGet packaging project contains metadata from PCL project.
            metadata = nugetProject.GetPackageMetadata();
            Assert.AreEqual("MyPackage", metadata.Id);
            Assert.AreEqual("1.2.3", metadata.Version);
            Assert.AreEqual("Authors", metadata.Authors);
            Assert.AreEqual("Owners", metadata.Owners);

            // NuGet packaging metadata is removed from PCL project.
            metadata = new NuGetPackageMetadata();
            metadata.Load(pclProject);
            Assert.IsTrue(metadata.IsEmpty());

            // PCL project should only have the assembly info file directly in the project.
            Assert.IsTrue(pclProject.MSBuildProject.GetAllItems().Any(item => item.Include.Contains("AssemblyInfo.cs")));
            Assert.IsFalse(pclProject.MSBuildProject.GetAllItems().Any(item => item.Include.Contains("MyClass.cs")));
            Assert.IsFalse(pclProject.MSBuildProject.GetAllItems().Any(item => item.Include.Contains("AnotherClass.cs")));
            string assemblyInfoFileName = pclProject.BaseDirectory.Combine("Properties", "AssemblyInfo.cs");

            Assert.IsTrue(File.Exists(assemblyInfoFileName));
            string csharpFileName = pclProject.BaseDirectory.Combine("MyClass.cs");

            Assert.IsFalse(File.Exists(csharpFileName));
            Assert.IsFalse(File.Exists(anotherCSharpFileName));

            // Shared project should have files from PCL project.
            string copiedCSharpFileName = sharedProject.BaseDirectory.Combine("MyClass.cs");

            Assert.That(sharedProject.Files.Select(f => f.FilePath.ToString()), Contains.Item(copiedCSharpFileName));
            Assert.IsTrue(File.Exists(copiedCSharpFileName));
            string copiedAnotherCSharpFileName = sharedProject.BaseDirectory.Combine("src", "AnotherClass.cs");

            Assert.That(sharedProject.Files.Select(f => f.FilePath.ToString()), Contains.Item(copiedAnotherCSharpFileName));
            Assert.IsTrue(File.Exists(copiedAnotherCSharpFileName));
            string copiedAssemblyInfoFileName = sharedProject.BaseDirectory.Combine("Properties", "AssemblyInfo.cs");

            Assert.That(sharedProject.Files.Select(f => f.FilePath.ToString()), Has.No.Member(copiedAssemblyInfoFileName));
            Assert.IsFalse(File.Exists(copiedAssemblyInfoFileName));

            var expectedBaseDirectory = pclProject.BaseDirectory.ParentDirectory;

            Assert.AreEqual(expectedBaseDirectory.Combine("MyProject.Android", "MyProject.Android.csproj"), androidProject.FileName);
            Assert.AreEqual(expectedBaseDirectory.Combine("MyProject.iOS", "MyProject.iOS.csproj"), iosProject.FileName);
            Assert.AreEqual(expectedBaseDirectory.Combine("MyProject.NuGet", "MyProject.NuGet.nuproj"), nugetProject.FileName);
            Assert.AreEqual(expectedBaseDirectory.Combine("MyProject.Shared", "MyProject.Shared.shproj"), sharedProject.FileName);

            // DefaultNamespace is the same for all projects.
            Assert.AreEqual("MyProject", androidProject.DefaultNamespace);
            Assert.AreEqual("MyProject", iosProject.DefaultNamespace);
            Assert.AreEqual("MyProject", pclProject.DefaultNamespace);
            Assert.AreEqual("MyProject", sharedProject.DefaultNamespace);

            // OutputAssemblyName is the same for PCL, iOS and Android project.
            Assert.IsTrue(androidProject.Configurations.OfType <DotNetProjectConfiguration> ().All(config => config.OutputAssembly == "MyProject"));
            Assert.IsTrue(iosProject.Configurations.OfType <DotNetProjectConfiguration> ().All(config => config.OutputAssembly == "MyProject"));
            Assert.IsTrue(pclProject.Configurations.OfType <DotNetProjectConfiguration> ().All(config => config.OutputAssembly == "MyProject"));

            // iOS and Android project should have an AssemblyInfo file.
            Assert.IsTrue(androidProject.MSBuildProject.GetAllItems().Any(item => item.Include.Contains("AssemblyInfo.cs")));
            Assert.IsTrue(iosProject.MSBuildProject.GetAllItems().Any(item => item.Include.Contains("AssemblyInfo.cs")));
        }
示例#41
0
 protected override void OnInitializeFromTemplate(ProjectCreateInformation projectCreateInfo, XmlElement projectOptions)
 {
     base.OnInitializeFromTemplate(projectCreateInfo, projectOptions);
     languageName     = projectOptions.GetAttribute("language");
     DefaultNamespace = projectCreateInfo.ProjectName;
 }
示例#42
0
        //Show prompt, create files from template, create project, execute command, save project
        public bool CreateProject(ProjectTemplateResult templateResults, string defaultLanguage, ISolutionFolder target)
        {
            var      projectCreateOptions = templateResults.Options;
            var      parentSolution       = templateResults.Options.Solution;
            IProject project = null;
            bool     success = false;

            try
            {
                string language = string.IsNullOrEmpty(languageName) ? defaultLanguage : languageName;
                ProjectBindingDescriptor descriptor   = SD.ProjectService.ProjectBindings.FirstOrDefault(b => b.Language == language);
                IProjectBinding          languageinfo = (descriptor != null) ? descriptor.Binding : null;

                if (languageinfo == null)
                {
                    MessageService.ShowError(
                        StringParser.Parse("${res:ICSharpCode.SharpDevelop.Internal.Templates.ProjectDescriptor.CantCreateProjectWithTypeError}",
                                           new StringTagPair("type", language)));
                    return(false);
                }

                DirectoryName projectBasePath = GetProjectBasePath(projectCreateOptions);
                string        newProjectName  = StringParser.Parse(name, new StringTagPair("ProjectName", projectCreateOptions.ProjectName));
                Directory.CreateDirectory(projectBasePath);
                FileName projectLocation      = projectBasePath.CombineFile(newProjectName + descriptor.ProjectFileExtension);
                ProjectCreateInformation info = new ProjectCreateInformation(parentSolution, projectLocation);
                info.TargetFramework = projectCreateOptions.TargetFramework;

                StringBuilder standardNamespace = new StringBuilder();
                // filter 'illegal' chars from standard namespace
                if (!string.IsNullOrEmpty(newProjectName))
                {
                    char ch = '.';
                    for (int i = 0; i < newProjectName.Length; ++i)
                    {
                        if (ch == '.')
                        {
                            // at beginning or after '.', only a letter or '_' is allowed
                            ch = newProjectName[i];
                            if (!Char.IsLetter(ch))
                            {
                                standardNamespace.Append('_');
                            }
                            else
                            {
                                standardNamespace.Append(ch);
                            }
                        }
                        else
                        {
                            ch = newProjectName[i];
                            // can only contain letters, digits or '_'
                            if (!Char.IsLetterOrDigit(ch) && ch != '.')
                            {
                                standardNamespace.Append('_');
                            }
                            else
                            {
                                standardNamespace.Append(ch);
                            }
                        }
                    }
                }

                info.TypeGuid      = descriptor.TypeGuid;
                info.RootNamespace = standardNamespace.ToString();
                info.ProjectName   = newProjectName;
                if (!string.IsNullOrEmpty(defaultPlatform))
                {
                    info.ActiveProjectConfiguration = new ConfigurationAndPlatform("Debug", defaultPlatform);
                }

                RunPreCreateActions(info);

                StringParserPropertyContainer.FileCreation["StandardNamespace"] = info.RootNamespace;

                if (File.Exists(projectLocation))
                {
                    if (!MessageService.AskQuestion(
                            StringParser.Parse("${res:ICSharpCode.SharpDevelop.Internal.Templates.ProjectDescriptor.OverwriteProjectQuestion}",
                                               new StringTagPair("projectLocation", projectLocation)),
                            "${res:ICSharpCode.SharpDevelop.Internal.Templates.ProjectDescriptor.OverwriteQuestion.InfoName}"))
                    {
                        return(false);                        //The user doesnt want to overwrite the project...
                    }
                }

                //Show prompt if any of the files exist
                StringBuilder existingFileNames = new StringBuilder();
                foreach (FileDescriptionTemplate file in files)
                {
                    string fileName = Path.Combine(projectBasePath, StringParser.Parse(file.Name, new StringTagPair("ProjectName", info.ProjectName)));

                    if (File.Exists(fileName))
                    {
                        if (existingFileNames.Length > 0)
                        {
                            existingFileNames.Append(", ");
                        }
                        existingFileNames.Append(Path.GetFileName(fileName));
                    }
                }

                bool overwriteFiles = true;
                if (existingFileNames.Length > 0)
                {
                    if (!MessageService.AskQuestion(
                            StringParser.Parse("${res:ICSharpCode.SharpDevelop.Internal.Templates.ProjectDescriptor.OverwriteQuestion}",
                                               new StringTagPair("fileNames", existingFileNames.ToString())),
                            "${res:ICSharpCode.SharpDevelop.Internal.Templates.ProjectDescriptor.OverwriteQuestion.InfoName}"))
                    {
                        overwriteFiles = false;
                    }
                }



                #region Copy files to target directory
                foreach (FileDescriptionTemplate file in files)
                {
                    string fileName = Path.Combine(projectBasePath, StringParser.Parse(file.Name, new StringTagPair("ProjectName", info.ProjectName)));
                    if (File.Exists(fileName) && !overwriteFiles)
                    {
                        continue;
                    }

                    try
                    {
                        if (!Directory.Exists(Path.GetDirectoryName(fileName)))
                        {
                            Directory.CreateDirectory(Path.GetDirectoryName(fileName));
                        }
                        if (!String.IsNullOrEmpty(file.BinaryFileName))
                        {
                            // Binary content
                            File.Copy(file.BinaryFileName, fileName, true);
                        }
                        else
                        {
                            // Textual content
                            StreamWriter sr          = new StreamWriter(File.Create(fileName), SD.FileService.DefaultFileEncoding);
                            string       fileContent = StringParser.Parse(file.Content,
                                                                          new StringTagPair("ProjectName", projectCreateOptions.ProjectName),
                                                                          new StringTagPair("SolutionName", projectCreateOptions.SolutionName),
                                                                          new StringTagPair("FileName", fileName));
                            fileContent = StringParser.Parse(fileContent);
                            if (SD.EditorControlService.GlobalOptions.IndentationString != "\t")
                            {
                                fileContent = fileContent.Replace("\t", SD.EditorControlService.GlobalOptions.IndentationString);
                            }
                            sr.Write(fileContent);
                            sr.Close();
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageService.ShowException(ex, "Exception writing " + fileName);
                    }
                }
                #endregion

                // Create Project
                info.InitializeTypeSystem = false;
                project = languageinfo.CreateProject(info);

                #region Create Project Items, Imports and Files
                // Add Project items
                if (!project.Items.IsReadOnly)
                {
                    foreach (ProjectItem projectItem in projectItems)
                    {
                        ProjectItem newProjectItem = new UnknownProjectItem(
                            project,
                            StringParser.Parse(projectItem.ItemType.ItemName),
                            StringParser.Parse(projectItem.Include,
                                               new StringTagPair("ProjectName", projectCreateOptions.ProjectName),
                                               new StringTagPair("SolutionName", projectCreateOptions.SolutionName))
                            );
                        foreach (string metadataName in projectItem.MetadataNames)
                        {
                            string metadataValue = projectItem.GetMetadata(metadataName);
                            // if the input contains any special MSBuild sequences, don't escape the value
                            // we want to escape only when the special characters are introduced by the StringParser.Parse replacement
                            if (metadataValue.Contains("$(") || metadataValue.Contains("%"))
                            {
                                newProjectItem.SetMetadata(StringParser.Parse(metadataName), StringParser.Parse(metadataValue));
                            }
                            else
                            {
                                newProjectItem.SetEvaluatedMetadata(StringParser.Parse(metadataName), StringParser.Parse(metadataValue));
                            }
                        }
                        project.Items.Add(newProjectItem);
                    }
                }

                // Add properties from <PropertyGroup>
                // This must be done before adding <Imports>, because the import path can refer to properties.
                if (projectProperties.Count > 0)
                {
                    if (!(project is MSBuildBasedProject))
                    {
                        throw new Exception("<PropertyGroup> may be only used in project templates for MSBuildBasedProjects");
                    }

                    foreach (ProjectProperty p in projectProperties)
                    {
                        ((MSBuildBasedProject)project).SetProperty(
                            StringParser.Parse(p.Configuration),
                            StringParser.Parse(p.Platform),
                            StringParser.Parse(p.Name),
                            StringParser.Parse(p.Value),
                            p.Location,
                            p.ValueIsLiteral
                            );
                    }
                }

                // Add Imports
                if (clearExistingImports || projectImports.Count > 0)
                {
                    MSBuildBasedProject msbuildProject = project as MSBuildBasedProject;
                    if (msbuildProject == null)
                    {
                        throw new Exception("<Imports> may be only used in project templates for MSBuildBasedProjects");
                    }
                    try {
                        msbuildProject.PerformUpdateOnProjectFile(
                            delegate {
                            var projectFile = msbuildProject.MSBuildProjectFile;
                            if (clearExistingImports)
                            {
                                foreach (var import in projectFile.Imports.ToArray())
                                {
                                    projectFile.RemoveChild(import);
                                }
                            }
                            foreach (Import projectImport in projectImports)
                            {
                                projectFile.AddImport(projectImport.Key).Condition = projectImport.Value;
                            }
                        });
                    } catch (InvalidProjectFileException ex) {
                        string message;
                        if (string.IsNullOrEmpty(importsFailureMessage))
                        {
                            message = "Error creating project:\n" + ex.Message;
                        }
                        else
                        {
                            message = importsFailureMessage + "\n\n" + ex.Message;
                        }
                        throw new ProjectLoadException(message, ex);
                    }
                }

                // Add Files
                if (!project.Items.IsReadOnly)
                {
                    foreach (FileDescriptionTemplate file in files)
                    {
                        string          fileName    = Path.Combine(projectBasePath, StringParser.Parse(file.Name, new StringTagPair("ProjectName", projectCreateOptions.ProjectName)));
                        FileProjectItem projectFile = new FileProjectItem(project, project.GetDefaultItemType(fileName));

                        projectFile.Include = FileUtility.GetRelativePath(project.Directory, fileName);

                        file.SetProjectItemProperties(projectFile);

                        project.Items.Add(projectFile);
                    }
                }

                #endregion

                RunCreateActions(project);

                project.ProjectCreationComplete();

                // Save project
                project.Save();

                // HACK : close and reload
                var fn = project.FileName;
                project.Dispose();
                ProjectLoadInformation loadInfo = new ProjectLoadInformation(parentSolution, fn, fn.GetFileNameWithoutExtension());
                project = SD.ProjectService.LoadProject(loadInfo);
                target.Items.Add(project);
                project.ProjectLoaded();

                SD.GetRequiredService <IProjectServiceRaiseEvents>().RaiseProjectCreated(new ProjectEventArgs(project));
                templateResults.NewProjects.Add(project);
                success = true;
                return(true);
            } finally {
                if (project != null && !success)
                {
                    project.Dispose();
                }
            }
        }
示例#43
0
        public async Task AddAndroidProjectForPCLProject()
        {
            string templateId = "MonoDevelop.CSharp.PortableLibrary";
            var    template   = ProjectTemplate.ProjectTemplates.FirstOrDefault(t => t.Id == templateId);
            var    dir        = Util.CreateTmpDir("AddAndroidProjectForPCLProject");
            var    cinfo      = new ProjectCreateInformation {
                ProjectBasePath = Path.Combine(dir, "MyProject"),
                ProjectName     = "MyProject",
                SolutionName    = "Solution",
                SolutionPath    = dir
            };

            var solution = await template.CreateWorkspaceItem(cinfo) as Solution;

            string solutionFileName = Path.Combine(dir, "Solution.sln");
            await solution.SaveAsync(solutionFileName, Util.GetMonitor());

            var pclProject = solution.GetAllProjects().OfType <DotNetProject> ().First();

            // Add NuGet package metadata to PCL project.
            var metadata = new NuGetPackageMetadata();

            metadata.Load(pclProject);
            metadata.Id      = "MyPackage";
            metadata.Authors = "Authors";
            metadata.Owners  = "Owners";
            metadata.Version = "1.2.3";
            metadata.UpdateProject(pclProject);
            await pclProject.SaveAsync(Util.GetMonitor());

            // Add platform implementation.
            var viewModel = new TestableAddPlatformImplementationViewModel(pclProject);

            viewModel.CreateAndroidProject = true;
            viewModel.CreateSharedProject  = false;
            viewModel.CreateIOSProject     = false;

            await viewModel.CreateProjects(Util.GetMonitor());

            // Verify projects created as expected.
            solution = (Solution)await Ide.Services.ProjectService.ReadWorkspaceItem(Util.GetMonitor(), solutionFileName);

            pclProject = solution.GetAllProjects().OfType <DotNetProject> ().FirstOrDefault(p => p.Name == "MyProject");

            // Solution contains Android project.
            var androidProject = solution.GetAllProjects().FirstOrDefault(p => p.Name == "MyProject.Android");

            Assert.That(androidProject.GetTypeTags(), Contains.Item("MonoDroid"));
            Assert.AreEqual("MyProject.Android.csproj", androidProject.FileName.FileName);

            // Solution contains NuGet packaging project.
            var nugetProject = solution.GetAllProjects().FirstOrDefault(p => p.Name == "MyProject.NuGet") as PackagingProject;

            Assert.AreEqual("MonoDevelop.Packaging.PackagingProject", nugetProject.GetType().FullName);
            Assert.AreEqual("MyProject.NuGet.nuproj", nugetProject.FileName.FileName);

            // NuGet packaging project references Android project.
            var androidProjectReference = nugetProject.References.Single(r => r.ResolveProject(solution) == androidProject);

            Assert.IsNotNull(androidProjectReference);

            // NuGet packaging project references PCL project.
            var projectReference = nugetProject.References.Single(r => r.ResolveProject(solution) == pclProject);

            Assert.IsNotNull(projectReference);

            // NuGet packaging project contains metadata from PCL project.
            metadata = nugetProject.GetPackageMetadata();
            Assert.AreEqual("MyPackage", metadata.Id);
            Assert.AreEqual("1.2.3", metadata.Version);
            Assert.AreEqual("Authors", metadata.Authors);
            Assert.AreEqual("Owners", metadata.Owners);

            // NuGet packaging metadata is removed from PCL project.
            metadata = new NuGetPackageMetadata();
            metadata.Load(pclProject);
            Assert.IsTrue(metadata.IsEmpty());

            // Configurations created for Android and NuGet packaging project.
            foreach (var config in solution.Configurations)
            {
                Assert.That(androidProject.GetConfigurations(), Contains.Item(config.Id));
                Assert.That(nugetProject.GetConfigurations(), Contains.Item(config.Id));
            }

            // DefaultNamespace is the same for all projects.
            Assert.AreEqual("MyProject", ((DotNetProject)androidProject).DefaultNamespace);
            Assert.AreEqual("MyProject", ((DotNetProject)pclProject).DefaultNamespace);
        }
 public WixProjectWithOverriddenSave(ProjectCreateInformation info) : base(info)
 {
 }
示例#45
0
        bool CreateProject()
        {
            if (templateView.CurrentlySelected != null)
            {
                PropertyService.Set("Dialogs.NewProjectDialog.LastSelectedCategory", ((ProjectTemplate)templateView.CurrentlySelected).Category);
                recentIds.Remove(templateView.CurrentlySelected.Id);
                recentIds.Insert(0, templateView.CurrentlySelected.Id);
                if (recentIds.Count > 15)
                {
                    recentIds.RemoveAt(recentIds.Count - 1);
                }
                string strRecent = string.Join(",", recentIds.ToArray());
                PropertyService.Set("Dialogs.NewProjectDialog.RecentTemplates", strRecent);
                PropertyService.SaveProperties();
                //PropertyService.Set("Dialogs.NewProjectDialog.LargeImages", ((RadioButton)ControlDictionary["largeIconsRadioButton"]).Checked);
            }

            string solution = txt_subdirectory.Text;
            string name     = txt_name.Text;
            string location = ProjectLocation;

            if (solution.Equals(""))
            {
                solution = name;                                 //This was empty when adding after first combine
            }
            if (
                !FileService.IsValidPath(solution) ||
                !FileService.IsValidFileName(name) ||
                name.IndexOf(' ') >= 0 ||
                !FileService.IsValidPath(location))
            {
                MessageService.ShowError(GettextCatalog.GetString("Illegal project name.\nOnly use letters, digits, '.' or '_'."));
                return(false);
            }

            if (parentFolder != null && parentFolder.ParentSolution.FindProjectByName(name) != null)
            {
                MessageService.ShowError(GettextCatalog.GetString("A Project with that name is already in your Project Space"));
                return(false);
            }

            PropertyService.Set(
                "MonoDevelop.Core.Gui.Dialogs.NewProjectDialog.AutoCreateProjectSubdir",
                CreateSolutionDirectory);

            if (templateView.CurrentlySelected == null || name.Length == 0)
            {
                return(false);
            }

            ProjectTemplate item = (ProjectTemplate)templateView.CurrentlySelected;

            try {
                System.IO.Directory.CreateDirectory(location);
            } catch (IOException) {
                MessageService.ShowError(GettextCatalog.GetString("Could not create directory {0}. File already exists.", location));
                return(false);
            } catch (UnauthorizedAccessException) {
                MessageService.ShowError(GettextCatalog.GetString("You do not have permission to create to {0}", location));
                return(false);
            }


            try {
                ProjectCreateInformation cinfo = CreateProjectCreateInformation();
                if (newSolution)
                {
                    newItem = item.CreateWorkspaceItem(cinfo);
                }
                else
                {
                    newItem = item.CreateProject(parentFolder, cinfo);
                }
            } catch (UserException ex) {
                MessageService.ShowError(ex.Message, ex.Details);
                return(false);
            } catch (Exception ex) {
                MessageService.ShowException(ex, GettextCatalog.GetString("The project could not be created"));
                return(false);
            }
            selectedItem = item;
            return(true);
        }
示例#46
0
 void SavePackageReferences(SolutionItem solutionEntryItem, ISolutionItemDescriptor descriptor, ProjectCreateInformation cInfo)
 {
     if ((solutionEntryItem is Project) && (descriptor is ProjectDescriptor))
     {
         var projectPackageReferences = new PackageReferencesForCreatedProject(((Project)solutionEntryItem).Name, ((ProjectDescriptor)descriptor).GetPackageReferences(cInfo));
         packageReferencesForCreatedProjects.Add(projectPackageReferences);
     }
 }
示例#47
0
        public Project CreateProject(ProjectCreateInformation info, XmlElement projectOptions)
        {
            string lang = projectOptions.GetAttribute("language");

            return(CreateProject(lang, info, projectOptions));
        }
示例#48
0
 public IProject CreateProject(ProjectCreateInformation info)
 {
     return(new BooProject(info));
 }
 public DummyWixProject(ProjectCreateInformation info) : base(info)
 {
 }
 public Project CreateProject(ProjectCreateInformation info, System.Xml.XmlElement projectOptions)
 {
     return(new SharedAssetsProject(info, projectOptions));
 }
 public IProject CreateProject(ProjectCreateInformation info)
 {
     info.ActiveProjectConfiguration = new ConfigurationAndPlatform("Debug", "Win32");
     return(new CppProject(info));
 }
 void CreateNewProjectsCreated(ProjectCreateInformation createInfo)
 {
     fakeProjectService = new FakePackageManagementProjectService();
     newProjectsCreated = new NewProjectsCreated(createInfo, fakeProjectService);
 }
示例#53
0
        public ValaProject(ProjectCreateInformation info,
                           XmlElement projectOptions, string language)
        {
            Init();
            string binPath = ".";

            if (info != null)
            {
                Name    = info.ProjectName;
                binPath = info.BinPath;
            }

            Compiler = null;

            ValaProjectConfiguration configuration =
                (ValaProjectConfiguration)CreateConfiguration("Debug");

            configuration.DebugMode = true;
            ((ValaCompilationParameters)configuration.CompilationParameters).DefineSymbols = "DEBUG MONODEVELOP";

            Configurations.Add(configuration);

            configuration =
                (ValaProjectConfiguration)CreateConfiguration("Release");

            configuration.DebugMode = false;
            ((ValaCompilationParameters)configuration.CompilationParameters).OptimizationLevel = 3;
            ((ValaCompilationParameters)configuration.CompilationParameters).DefineSymbols     = "MONODEVELOP";
            Configurations.Add(configuration);

            foreach (ValaProjectConfiguration c in Configurations)
            {
                c.OutputDirectory = Path.Combine(binPath, c.Name);
                c.SourceDirectory = info.ProjectBasePath;
                c.Output          = Name;
                ValaCompilationParameters parameters = c.CompilationParameters as ValaCompilationParameters;

                if (projectOptions != null)
                {
                    if (projectOptions.Attributes["Target"] != null)
                    {
                        c.CompileTarget = (ValaBinding.CompileTarget)Enum.Parse(
                            typeof(ValaBinding.CompileTarget),
                            projectOptions.Attributes["Target"].InnerText);
                    }
                    if (projectOptions.Attributes["PauseConsoleOutput"] != null)
                    {
                        c.PauseConsoleOutput = bool.Parse(
                            projectOptions.Attributes["PauseConsoleOutput"].InnerText);
                    }
                    if (projectOptions.Attributes["CompilerArgs"].InnerText != null)
                    {
                        if (parameters != null)
                        {
                            parameters.ExtraCompilerArguments = projectOptions.Attributes["CompilerArgs"].InnerText;
                        }
                    }
                    if (projectOptions.Attributes["Packages"].InnerText != null)
                    {
                        List <ProjectPackage> packs = new List <ProjectPackage>();
                        foreach (string pack in projectOptions.Attributes["Packages"].InnerText.Split('|'))
                        {
                            packs.Add(new ProjectPackage(
                                          string.Format("{0}{1}{2}.vapi",
                                                        vapidir,
                                                        Path.DirectorySeparatorChar,
                                                        pack)));
                        }
                        packages.AddRange(packs);
                    }
                }
            }
        }
 public SmartQuantProject(string languageName, ProjectCreateInformation projectCreateInfo, XmlElement projectOptions) : base(languageName, projectCreateInfo, projectOptions)
 {
 }
示例#55
0
 public XobotProject(string language, ProjectCreateInformation info, XmlElement options)
     : base(language, info, options)
 {
     Init();
 }
        void CreateProject()
        {
            if (categoryTreeView.SelectedNode != null)
            {
                PropertyService.Set("Dialogs.NewProjectDialog.LastSelectedCategory", TreeViewHelper.GetPath(categoryTreeView.SelectedNode));
                PropertyService.Set("Dialogs.NewProjectDialog.CategoryTreeState", TreeViewHelper.GetViewStateString(categoryTreeView));
                PropertyService.Set("Dialogs.NewProjectDialog.LargeImages", largeIconsRadioButton.Checked);
            }

            string solution         = solutionNameTextBox.Text.Trim();
            string name             = nameTextBox.Text.Trim();
            string location         = locationTextBox.Text.Trim();
            string projectNameError = CheckProjectName(solution, name, location);

            if (projectNameError != null)
            {
                MessageService.ShowError(projectNameError);
                return;
            }

            if (templateListView.SelectedItems.Count == 1 && locationTextBox.Text.Length > 0 && solutionNameTextBox.Text.Length > 0)
            {
                TemplateItem item = (TemplateItem)templateListView.SelectedItems[0];
                try {
                    System.IO.Directory.CreateDirectory(NewProjectDirectory);
                } catch (Exception) {
                    MessageService.ShowError("${res:ICSharpCode.SharpDevelop.Gui.Dialogs.NewProjectDialog.CantCreateDirectoryError}");
                    return;
                }

                ProjectCreateInformation cinfo = new ProjectCreateInformation();
                if (!createNewSolution)
                {
                    cinfo.Solution     = ProjectService.OpenSolution;
                    cinfo.SolutionPath = Path.GetDirectoryName(cinfo.Solution.FileName);
                    cinfo.SolutionName = cinfo.Solution.Name;
                }
                else
                {
                    cinfo.SolutionPath = NewSolutionDirectory;
                }

                if (item.Template.HasSupportedTargetFrameworks)
                {
                    cinfo.TargetFramework = (TargetFramework)targetFrameworkComboBox.SelectedItem;
                    PropertyService.Set("Dialogs.NewProjectDialog.TargetFramework", cinfo.TargetFramework.Name);
                }

                cinfo.ProjectBasePath = NewProjectDirectory;
                cinfo.SolutionName    = solution;
                cinfo.ProjectName     = name;

                NewSolutionLocation = item.Template.CreateProject(cinfo);
                if (NewSolutionLocation == null || NewSolutionLocation.Length == 0)
                {
                    return;
                }

                NewProjectLocation = cinfo.createdProjects.Count > 0 ? cinfo.createdProjects[0].FileName : "";
                if (createNewSolution)
                {
                    ProjectService.LoadSolution(NewSolutionLocation);
                }
                else
                {
                    AddExistingProjectToSolution.AddProject(SolutionFolderNode, NewProjectLocation);
                    ProjectService.SaveSolution();
                }
                item.Template.RunOpenActions(cinfo);

                DialogResult = DialogResult.OK;
            }
        }
示例#57
0
 public RubyProject(ProjectCreateInformation info)
     : base(info)
 {
     base.MSBuildProjectFile.AddTarget("Build");
 }
示例#58
0
        // icon view event handlers
        void SelectedIndexChange(object sender, EventArgs e)
        {
            try {
                btn_new.Sensitive               = true;
                txt_name.Sensitive              = true;
                txt_subdirectory.Sensitive      = true;
                chk_combine_directory.Sensitive = true;
                entry_location.Sensitive        = true;

                if (templateView.CurrentlySelected != null)
                {
                    ProjectTemplate ptemplate = (ProjectTemplate)templateView.CurrentlySelected;
                    lbl_template_descr.Text   = StringParserService.Parse(ptemplate.Description);
                    labelTemplateTitle.Markup = "<b>" + GLib.Markup.EscapeText(ptemplate.Name) + "</b>";

                    if (ptemplate.SolutionDescriptor.EntryDescriptors.Length == 0)
                    {
                        txt_subdirectory.Sensitive      = false;
                        chk_combine_directory.Sensitive = false;
                        lbl_subdirectory.Sensitive      = false;
                        btn_new.Label = Gtk.Stock.Ok;
                    }
                    else
                    {
                        lbl_subdirectory.Sensitive = true;
                        txt_subdirectory.Text      = txt_name.Text;

                        ProjectCreateInformation cinfo = CreateProjectCreateInformation();
                        if (ptemplate.HasItemFeatures(parentFolder, cinfo))
                        {
                            btn_new.Label = Gtk.Stock.GoForward;
                        }
                        else
                        {
                            btn_new.Label = Gtk.Stock.Ok;
                        }
                    }
                }
                else
                {
                    lbl_template_descr.Text = String.Empty;
                    labelTemplateTitle.Text = "";
                }

                PathChanged(null, null);

                btn_new.GrabDefault();
            } catch (Exception ex) {
                txt_name.Sensitive              = false;
                btn_new.Sensitive               = false;
                txt_subdirectory.Sensitive      = false;
                chk_combine_directory.Sensitive = false;
                entry_location.Sensitive        = false;

                while (ex is TargetInvocationException)
                {
                    ex = ((TargetInvocationException)ex).InnerException;
                }

                if (ex is UserException)
                {
                    var user = (UserException)ex;
                    MessageService.ShowError(user.Message, user.Details);
                }
                else
                {
                    MessageService.ShowException(ex);
                };
            }
        }
示例#59
0
 public Project CreateProject(ProjectCreateInformation info, XmlElement projectOptions)
 {
     return(new PythonProject(Name, info, projectOptions));
 }
示例#60
0
 public TestableProject(ProjectCreateInformation createInfo)
     : base(createInfo)
 {
 }