private void AddNewDtoFileToProject(string fileName, string templateCode, List <string> nugetPackages = null)
        {
            nugetPackages = nugetPackages ?? new List <string>();

            var project = VSIXUtils.GetSelectedProject() ?? VSIXUtils.GetSelectObject <ProjectItem>().ContainingProject;

            // This is a temporary work around for ServiceStack *.Core packages whilst they are separate/in beta.
            // This is to be removed/updated once the Text, Client and/or Interfaces NuGet packages support NetCore by default.
            nugetPackages = ApplyNetCoreNuGetPackages(nugetPackages, project);

            var    path     = VSIXUtils.GetSelectedProjectPath() ?? VSIXUtils.GetSelectedFolderPath();
            string fullPath = Path.Combine(path, fileName);

            using (var streamWriter = File.CreateText(fullPath))
            {
                streamWriter.Write(templateCode);
                streamWriter.Flush();
            }
            // HACK avoid VS2015 Update 2 seems to detect file in use semi regularly.
            Thread.Sleep(20);
            var newDtoFile = project.ProjectItems.AddFromFile(fullPath);

            newDtoFile.Open(EnvDTE.Constants.vsViewKindCode);
            newDtoFile.Save();
            foreach (var nugetPackage in nugetPackages)
            {
                AddNuGetDependencyIfMissing(project, nugetPackage);
            }

            project.Save();
        }
        private void AddNewDtoFileToProject(string fileName, string templateCode, List <string> nugetPackages = null)
        {
            nugetPackages = nugetPackages ?? new List <string>();
            var    project  = VSIXUtils.GetSelectedProject() ?? VSIXUtils.GetSelectObject <ProjectItem>().ContainingProject;
            var    path     = VSIXUtils.GetSelectedProjectPath() ?? VSIXUtils.GetSelectedFolderPath();
            string fullPath = Path.Combine(path, fileName);

            using (var streamWriter = File.CreateText(fullPath))
            {
                streamWriter.Write(templateCode);
                streamWriter.Flush();
            }
            // HACK avoid VS2015 Update 2 seems to detect file in use semi regularly.
            Thread.Sleep(20);
            var newDtoFile = project.ProjectItems.AddFromFile(fullPath);

            newDtoFile.Open(EnvDTE.Constants.vsViewKindCode);
            newDtoFile.Save();
            foreach (var nugetPackage in nugetPackages)
            {
                AddNuGetDependencyIfMissing(project, nugetPackage);
            }

            project.Save();
        }
        private void TypeScriptAddReferenceCallback(object sender, EventArgs e)
        {
            var    projectPath  = VSIXUtils.GetSelectedProjectPath();
            var    folderPath   = VSIXUtils.GetSelectedFolderPath();
            string finalPath    = projectPath ?? folderPath;
            var    typesHandler = NativeTypeHandlers.TypeScriptNativeTypesHandler;

            AddServiceStackReference(finalPath, typesHandler);
        }
示例#4
0
        private void AddNewDtoFileToProject(string fileName, string templateCode, List <string> nugetPackages = null)
        {
            nugetPackages = nugetPackages ?? new List <string>();

            var project = VSIXUtils.GetSelectedProject() ?? VSIXUtils.GetSelectObject <ProjectItem>().ContainingProject;

            var    path     = VSIXUtils.GetSelectedProjectPath() ?? VSIXUtils.GetSelectedFolderPath();
            string fullPath = Path.Combine(path, fileName);

            File.WriteAllText(fullPath, templateCode);

            try
            {
                // HACK avoid VS2015 Update 2 seems to detect file in use semi regularly.
                Thread.Sleep(50);
                var newDtoFile = project.ProjectItems.AddFromFile(fullPath);
                newDtoFile.Open(EnvDteConstants.vsViewKindCode);
                newDtoFile.Save();
            }
            catch (Exception) {}

            try
            {
                foreach (var nugetPackage in nugetPackages)
                {
                    AddNuGetDependencyIfMissing(project, nugetPackage);
                }
            }
            catch (Exception) {}

            try
            {
                project.Save();
            }
            catch (Exception) {}
        }