public void ProjectFilePaths() { DotNetProject project = Services.ProjectService.CreateDotNetProject("C#"); string dir = Environment.CurrentDirectory; ProjectFile file1 = project.AddFile(Util.Combine(dir, "test1.cs"), BuildAction.Compile); Assert.AreEqual(Util.Combine(dir, "test1.cs"), file1.Name); ProjectFile file2 = project.AddFile(Util.Combine(dir, "aaa", "..", "bbb", "test2.cs"), BuildAction.Compile); Assert.AreEqual(Util.Combine(dir, "bbb", "test2.cs"), file2.Name); ProjectFile file = project.Files.GetFile(Util.Combine(dir, "test1.cs")); Assert.AreEqual(file1, file); file = project.Files.GetFile(Util.Combine(dir, "aaa", "..", "test1.cs")); Assert.AreEqual(file1, file); file = project.Files.GetFile(Util.Combine(dir, "bbb", "test2.cs")); Assert.AreEqual(file2, file); file = project.Files.GetFile(Util.Combine(dir, "aaa", "..", "bbb", "test2.cs")); Assert.AreEqual(file2, file); }
protected override string GenerateDescriptionFiles (DotNetProject project, FilePath basePath) { if (!project.Items.GetAll<WebReferencesDir> ().Any ()) { WebReferencesDir met = new WebReferencesDir (); met.Path = basePath.ParentDirectory; project.Items.Add (met); } WebReferenceUrl wru = project.Items.GetAll<WebReferenceUrl> ().FirstOrDefault (m => m.RelPath.CanonicalPath == basePath); if (wru == null) { wru = new WebReferenceUrl (protocol.Url); wru.RelPath = basePath; project.Items.Add (wru); } protocol.ResolveAll (); DiscoveryClientResultCollection files = protocol.WriteAll (basePath, "Reference.map"); foreach (DiscoveryClientResult dr in files) project.AddFile (new FilePath (dr.Filename).ToAbsolute (basePath), BuildAction.None); return Path.Combine (basePath, "Reference.map"); }
public static void AddController (DotNetProject project, string path, string name) { var provider = project.LanguageBinding.GetCodeDomProvider (); if (provider == null) throw new InvalidOperationException ("Project language has null CodeDOM provider"); string outputFile = null; MvcTextTemplateHost host = null; AddControllerDialog dialog = null; try { dialog = new AddControllerDialog (project); if (!String.IsNullOrEmpty (name)) dialog.ControllerName = name; bool fileGood = false; while (!fileGood) { var resp = (Gtk.ResponseType) MessageService.RunCustomDialog (dialog); dialog.Hide (); if (resp != Gtk.ResponseType.Ok || !dialog.IsValid ()) return; outputFile = System.IO.Path.Combine (path, dialog.ControllerName) + ".cs"; if (System.IO.File.Exists (outputFile)) { fileGood = MessageService.AskQuestion ("Overwrite file?", String.Format ("The file '{0}' already exists.\n", dialog.ControllerName) + "Would you like to overwrite it?", AlertButton.OverwriteFile, AlertButton.Cancel) != AlertButton.Cancel; } else break; } host = new MvcTextTemplateHost { LanguageExtension = provider.FileExtension, ItemName = dialog.ControllerName, NameSpace = project.DefaultNamespace + ".Controllers" }; host.ProcessTemplate (dialog.TemplateFile, outputFile); MonoDevelop.TextTemplating.TextTemplatingService.ShowTemplateHostErrors (host.Errors); } finally { if (host != null) host.Dispose (); if (dialog != null) { dialog.Destroy (); dialog.Dispose (); } } if (System.IO.File.Exists (outputFile)) { project.AddFile (outputFile); IdeApp.ProjectOperations.SaveAsync (project); } }
protected override string GenerateDescriptionFiles (DotNetProject dotNetProject, FilePath basePath) { if (!dotNetProject.Items.GetAll<WCFMetadata> ().Any ()) { var met = new WCFMetadata (); met.Path = basePath.ParentDirectory; dotNetProject.Items.Add (met); } WCFMetadataStorage metStor = dotNetProject.Items.GetAll<WCFMetadataStorage> ().FirstOrDefault (m => m.Path.CanonicalPath == basePath); if (metStor == null) dotNetProject.Items.Add (new WCFMetadataStorage { Path = basePath }); string file = Path.Combine (basePath, "Reference.svcmap"); if (protocol != null) { protocol.ResolveAll (); protocol.WriteAll (basePath, "Reference.svcmap"); refGroup = ConvertMapFile (file); } else { // TODO var map = new ReferenceGroup (); map.ClientOptions = defaultOptions; map.Save (file); map.ID = Guid.NewGuid ().ToString (); refGroup = map; } foreach (MetadataFile mfile in refGroup.Metadata) dotNetProject.AddFile (new FilePath (mfile.FileName).ToAbsolute (basePath), BuildAction.None); return file; }
public static void AddView (DotNetProject project, string path, string name) { var provider = project.LanguageBinding.GetCodeDomProvider (); if (provider == null) throw new InvalidOperationException ("Project language has null CodeDOM provider"); string outputFile = null; MvcTextTemplateHost host = null; AddViewDialog dialog = null; try { dialog = new AddViewDialog (project); dialog.ViewName = name; bool fileGood = false; while (!fileGood) { var resp = (Gtk.ResponseType) MessageService.RunCustomDialog (dialog); dialog.Hide (); if (resp != Gtk.ResponseType.Ok || ! dialog.IsValid ()) return; string ext = ".cshtml"; if (dialog.ActiveViewEngine == "Aspx") ext = dialog.IsPartialView ? ".ascx" : ".aspx"; if (!System.IO.Directory.Exists (path)) System.IO.Directory.CreateDirectory (path); outputFile = System.IO.Path.Combine (path, dialog.ViewName) + ext; if (System.IO.File.Exists (outputFile)) { fileGood = MessageService.AskQuestion (GettextCatalog.GetString ("Overwrite file?"), GettextCatalog.GetString ("The file '{0}' already exists.\n", dialog.ViewName) + GettextCatalog.GetString ("Would you like to overwrite it?"), AlertButton.OverwriteFile, AlertButton.Cancel) != AlertButton.Cancel; } else break; } host = new MvcTextTemplateHost { LanguageExtension = provider.FileExtension, ItemName = dialog.ViewName, ViewDataTypeString = "" }; if (dialog.HasMaster) { host.IsViewContentPage = true; host.ContentPlaceholder = dialog.PrimaryPlaceHolder; host.MasterPage = dialog.MasterFile; host.ContentPlaceHolders = dialog.ContentPlaceHolders; } else if (dialog.IsPartialView) host.IsViewUserControl = true; else host.IsViewPage = true; if (dialog.IsStronglyTyped) host.ViewDataTypeString = dialog.ViewDataTypeString; host.ProcessTemplate (dialog.TemplateFile, outputFile); MonoDevelop.TextTemplating.TextTemplatingService.ShowTemplateHostErrors (host.Errors); } finally { if (host != null) host.Dispose (); if (dialog != null) { dialog.Destroy (); dialog.Dispose (); } } if (System.IO.File.Exists (outputFile)) { project.AddFile (outputFile); IdeApp.ProjectOperations.SaveAsync (project); } }
protected override async Task<string> GenerateDescriptionFiles (DotNetProject dotNetProject, FilePath basePath) { if (!dotNetProject.Items.GetAll<WebReferencesDir> ().Any ()) { var met = new WebReferencesDir (basePath.ParentDirectory); dotNetProject.Items.Add (met); } DiscoveryClientResultCollection files = await Task.Run (() => { WebReferenceUrl wru = dotNetProject.Items.GetAll<WebReferenceUrl> ().FirstOrDefault (m => m.RelPath.CanonicalPath == basePath); if (wru == null) { wru = new WebReferenceUrl (protocol.Url); wru.RelPath = basePath; dotNetProject.Items.Add (wru); } protocol.ResolveAll (); return protocol.WriteAll (basePath, "Reference.map"); }); foreach (DiscoveryClientResult dr in files) dotNetProject.AddFile (new FilePath (Path.GetFileName (dr.Filename)).ToAbsolute (basePath), BuildAction.None); return Path.Combine (basePath, "Reference.map"); }
static ProjectFile MigrateToProjectJson (DotNetProject project) { var projectJsonName = project.BaseDirectory.Combine ("project.json"); var projectJsonFile = new ProjectFile (projectJsonName, BuildAction.None); bool isOpen = false; JObject json; ITextDocument file; if (System.IO.File.Exists (projectJsonName)) { file = TextFileProvider.Instance.GetTextEditorData (projectJsonFile.FilePath.ToString (), out isOpen); using (var tr = file.CreateReader ()) using (var jr = new Newtonsoft.Json.JsonTextReader (tr)) { json = (JObject)JToken.Load (jr); } } else { file = TextEditorFactory.CreateNewDocument (); file.FileName = projectJsonName; file.Encoding = Encoding.UTF8; json = new JObject ( new JProperty ("dependencies", new JObject ()), new JProperty ("frameworks", new JObject()) ); } var packagesConfigFile = project.GetProjectFile (project.BaseDirectory.Combine ("packages.config")); if (packagesConfigFile != null) { //NOTE: it might also be open and unsaved, but that's an unimportant edge case, ignore it var configDoc = System.Xml.Linq.XDocument.Load (packagesConfigFile.FilePath); if (configDoc.Root != null) { var deps = (json ["dependencies"] as JObject) ?? ((JObject)(json ["dependencies"] = new JObject ())); foreach (var packagelEl in configDoc.Root.Elements ("package")) { deps [(string)packagelEl.Attribute ("id")] = (string)packagelEl.Attribute ("version"); } } } var framework = GetPclProfileFullName (project.TargetFramework.Id) ?? NetStandardDefaultFramework; json ["frameworks"] = new JObject ( new JProperty (framework, new JObject()) ); file.Text = json.ToString (); if (!isOpen) { file.Save (); } project.AddFile (projectJsonFile); if (packagesConfigFile != null) { project.Files.Remove (packagesConfigFile); //we have to delete the packages.config, or the NuGet addin will try to retarget its packages FileService.DeleteFile (packagesConfigFile.FilePath); //remove the package refs nuget put in the file, project.json doesn't use those project.References.RemoveRange (project.References.Where (IsFromPackage).ToArray ()); } return projectJsonFile; }