private void PrepareConfigFile() { // add a temporal file on App_Code folder in case there's no code so we force precompilation and // get code analysis for the web.config file // Note: this file may be removed after the code analysis process is done. Web.VSWebSite webProject = this.project.Object as Web.VSWebSite; if (webProject.CodeFolders.Count == 0) { // add App_Code folder webProject.CodeFolders.Add("App_Code\\"); } Web.CodeFolder codeFolder = (Web.CodeFolder)webProject.CodeFolders.Item(1); // check if we need to add a temp file foreach (ProjectItem item in codeFolder.ProjectItem.ProjectItems) { string ext = Path.GetExtension(item.Name); if (!string.IsNullOrEmpty(ext) && !ext.Equals(".exclude", StringComparison.OrdinalIgnoreCase)) { // do not add the temp file since we already have some code file return; } } this.webTempFile = Path.Combine(webProject.Project.FileName, codeFolder.FolderPath.Replace(Path.AltDirectorySeparatorChar, Path.DirectorySeparatorChar) + Path.ChangeExtension(Path.GetRandomFileName(), DteHelperEx.GetDefaultExtension(this.project))); if (!File.Exists(this.webTempFile)) { File.WriteAllText(this.webTempFile, string.Empty); } }
private void SetCodeAnalysisOnReferences(string rulesPath) { if (!DteHelper2.IsWebProject(this.project)) { Vs.VSProject vsProject = this.project.Object as Vs.VSProject; foreach (Vs.Reference reference in vsProject.References) { if (reference.SourceProject != null) { SetCodeAnalysisOnProject(reference.SourceProject, rulesPath); } } } else { Web.VSWebSite webProject = this.project.Object as Web.VSWebSite; foreach (Web.AssemblyReference reference in webProject.References) { Project project = GetSourceProject(reference); if (project != null) { SetCodeAnalysisOnProject(project, rulesPath); } } } }
private void LoadProjectReferenceTypesFromCurrentProject(Dictionary <string, Type> availableTypes, IServiceProvider provider, Project currentProject) { List <Project> referencedProjects = new List <Project>(); if (!DteHelper2.IsWebProject(currentProject)) { Vs.VSProject vsProject = currentProject.Object as Vs.VSProject; foreach (Vs.Reference reference in vsProject.References) { if (reference.SourceProject != null) { referencedProjects.Add(reference.SourceProject); } } } else { Web.VSWebSite webProject = currentProject.Object as Web.VSWebSite; foreach (Web.AssemblyReference reference in webProject.References) { Project project = GetSourceProject(reference); if (project != null) { referencedProjects.Add(project);; } } } LoadTypesFromProjects(referencedProjects, availableTypes, provider, currentProject); }
/// <summary> /// Adds the project reference to the <see cref="ReferencedProject"/> /// </summary> public override void Execute() { if (this.ReferencedProject.UniqueName.Equals(this.ReferringProject.UniqueName, StringComparison.InvariantCultureIgnoreCase)) { // Do nothing. return; } // If reference already exists, nothing happens. // If referringProject is a VSProject VSProject vsProject = referringProject.Object as VSProject; if (vsProject != null) { if (referencedProject.Kind.Equals(WebProjectKind, StringComparison.InvariantCultureIgnoreCase)) { VsWebSite.VSWebSite vsWebSite = (VsWebSite.VSWebSite)(referencedProject.Object); foreach (VsWebSite.WebService webService in vsWebSite.WebServices) { vsProject.AddWebReference(webService.URL); } } else { // No error handling needed here. See documentation for AddProject. vsProject.References.AddProject(referencedProject); } } else { // If the Project recived is not a VsProject // Try it with a webProject VSWebSite webProject = referringProject.Object as VSWebSite; if (webProject != null) { if (referencedProject.Kind.Equals(WebProjectKind, StringComparison.InvariantCultureIgnoreCase)) { VSWebSite vsWebSite = (VSWebSite)(referencedProject.Object); foreach (VsWebSite.WebService webService in vsWebSite.WebServices) { webProject.WebReferences.Add(webService.URL, webService.ClassName); } } else { // Check if the reference already exists in the WebProject if (!IsAlreadyReferenced(webProject, referencedProject)) { webProject.References.AddFromProject(referencedProject); } } } } }