/// <summary> /// Just gen file with no project /// </summary> public void AddProjectItem(string fileContent, byte[] fileContentBinary, ProjectItemContentType contentType, string relativePathAndName, bool overwrite, out FileStateInfo fileStateInfo) { try { fileStateInfo = new FileStateInfo(); fileStateInfo.FileState = FileStateConstants.Failed; FileInfo newFile = null; var fullName = relativePathAndName; fullName = fullName.Replace(@"\\", @"\"); fileStateInfo.FileName = fullName; newFile = new FileInfo(fullName); if (newFile.Exists && !overwrite) { fileStateInfo.FileState = FileStateConstants.Skipped; } else { if (!newFile.Directory.Exists) { newFile.Directory.Create(); } if (contentType == ProjectItemContentType.String) { using (var sw = newFile.CreateText()) { sw.Write(fileContent); } } else { File.WriteAllBytes(newFile.FullName, fileContentBinary); } fileStateInfo.FileState = FileStateConstants.Success; } } catch (Exception ex) { throw; } }
public ProjectItem AddProjectItem(Project project, string fileContent, byte[] fileContentBinary, ProjectItemContentType contentType, string relativePathAndName, bool overwrite, out FileStateInfo fileStateInfo) { try { BuildCache(project); fileStateInfo = new FileStateInfo(); fileStateInfo.FileState = FileStateConstants.Failed; FileInfo newFile = null; if (project.Kind == Constants.vsProjectKindUnmodeled) { var applicationObject = (DTE) EnvDTEHelper.Instance._applicationObject; //Handle on Solution Explorer window var slnExplorer = applicationObject.Windows.Item(Constants.vsWindowKindSolutionExplorer); var slnHierarchy = (UIHierarchy) slnExplorer.Object; slnExplorer.Activate(); var dbProject = EnvDTEHelper.Instance.Find(project); dbProject.Select(vsUISelectionType.vsUISelectionTypeSelect); } else { var currentProjectFile = new FileInfo(project.FileName); var fullName = StringHelper.EnsureDirectorySeperatorAtEnd(currentProjectFile.Directory.FullName) + relativePathAndName; fullName = fullName.Replace(@"\\", @"\"); fileStateInfo.FileName = fullName; newFile = new FileInfo(fullName); if (newFile.Exists && !overwrite) { fileStateInfo.FileState = FileStateConstants.Skipped; if (_projectCache[project].Select(x => x.Name).Contains(fullName.ToLower())) { //Do Nothing return null; } else { return project.ProjectItems.AddFromFile(newFile.FullName); } } else if (newFile.Exists && (newFile.Attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly) { fileStateInfo.FileState = FileStateConstants.Failed; return null; } if (!newFile.Directory.Exists) newFile.Directory.Create(); if (contentType == ProjectItemContentType.String) { using (var sw = newFile.CreateText()) { sw.Write(fileContent); } } else { File.WriteAllBytes(newFile.FullName, fileContentBinary); } } try { fileStateInfo.FileState = FileStateConstants.Success; if (_projectCache[project].Select(x => x.Name).Contains(newFile.FullName.ToLower())) { //Do Nothing return null; } else { return project.ProjectItems.AddFromFile(newFile.FullName); } } catch (Exception ex) { fileStateInfo.FileState = FileStateConstants.Failed; return null; } } catch (Exception ex) { throw; } }
/// <summary> /// Just gen file with no project /// </summary> public void AddProjectItem(string fileContent, byte[] fileContentBinary, ProjectItemContentType contentType, string relativePathAndName, bool overwrite, out FileStateInfo fileStateInfo) { try { fileStateInfo = new FileStateInfo(); fileStateInfo.FileState = FileStateConstants.Failed; FileInfo newFile = null; var fullName = relativePathAndName; fullName = fullName.Replace(@"\\", @"\"); fileStateInfo.FileName = fullName; newFile = new FileInfo(fullName); if (newFile.Exists && !overwrite) { fileStateInfo.FileState = FileStateConstants.Skipped; } else { if (!newFile.Directory.Exists) newFile.Directory.Create(); if (contentType == ProjectItemContentType.String) { using (var sw = newFile.CreateText()) { sw.Write(fileContent); } } else { File.WriteAllBytes(newFile.FullName, fileContentBinary); } fileStateInfo.FileState = FileStateConstants.Success; } } catch (Exception ex) { throw; } }
public ProjectItem AddProjectItem(Project project, string fileContent, byte[] fileContentBinary, ProjectItemContentType contentType, string relativePathAndName, bool overwrite, out FileStateInfo fileStateInfo) { try { BuildCache(project); fileStateInfo = new FileStateInfo(); fileStateInfo.FileState = FileStateConstants.Failed; FileInfo newFile = null; if (project.Kind == Constants.vsProjectKindUnmodeled) { var applicationObject = (DTE)EnvDTEHelper.Instance._applicationObject; //Handle on Solution Explorer window var slnExplorer = applicationObject.Windows.Item(Constants.vsWindowKindSolutionExplorer); var slnHierarchy = (UIHierarchy)slnExplorer.Object; slnExplorer.Activate(); var dbProject = EnvDTEHelper.Instance.Find(project); dbProject.Select(vsUISelectionType.vsUISelectionTypeSelect); } else { var currentProjectFile = new FileInfo(project.FileName); var fullName = StringHelper.EnsureDirectorySeparatorAtEnd(currentProjectFile.Directory.FullName) + relativePathAndName; fullName = fullName.Replace(@"\\", @"\"); fileStateInfo.FileName = fullName; newFile = new FileInfo(fullName); if (newFile.Exists && !overwrite) { fileStateInfo.FileState = FileStateConstants.Skipped; if (_projectCache[project].Select(x => x.Name).Contains(fullName.ToLower())) { //Do Nothing return(null); } else { return(project.ProjectItems.AddFromFile(newFile.FullName)); } } else if (newFile.Exists && (newFile.Attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly) { fileStateInfo.FileState = FileStateConstants.Failed; return(null); } if (!newFile.Directory.Exists) { newFile.Directory.Create(); } if (contentType == ProjectItemContentType.String) { using (var sw = newFile.CreateText()) { sw.Write(fileContent); } } else { File.WriteAllBytes(newFile.FullName, fileContentBinary); } } try { fileStateInfo.FileState = FileStateConstants.Success; if (_projectCache[project].Select(x => x.Name).Contains(newFile.FullName.ToLower())) { //Do Nothing return(null); } else { return(project.ProjectItems.AddFromFile(newFile.FullName)); } } catch (Exception ex) { fileStateInfo.FileState = FileStateConstants.Failed; return(null); } } catch (Exception ex) { throw; } }