Skip to content

Commit ffbaae3

Browse files
authored
Merge pull request #471 from tonyhallett/use-assembly-name-from-project-properties
use project properties for assembly name
2 parents cf7da3d + 286c084 commit ffbaae3

File tree

1 file changed

+36
-6
lines changed

1 file changed

+36
-6
lines changed

SharedProject/Core/Model/CoverageProject.cs

+36-6
Original file line numberDiff line numberDiff line change
@@ -307,7 +307,7 @@ private async Task<List<ReferencedProject>> SafeGetReferencedProjectsFromDteAsyn
307307
return null;
308308
}
309309

310-
private async Task<List<ReferencedProject>> GetReferencedProjectsFromDteAsync()
310+
private async Task<VSLangProj.VSProject> GetProjectAsync()
311311
{
312312
await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();
313313
var project = dte.Solution.Projects.Cast<Project>().FirstOrDefault(p =>
@@ -328,12 +328,42 @@ private async Task<List<ReferencedProject>> GetReferencedProjectsFromDteAsync()
328328
return null;
329329
}
330330

331-
var vsproject = project.Object as VSLangProj.VSProject;
332-
return vsproject.References.Cast<VSLangProj.Reference>().Where(r => r.SourceProject != null).Select(r =>
331+
return project.Object as VSLangProj.VSProject;
332+
}
333+
334+
private IEnumerable<Project> GetReferencedSourceProjects(VSLangProj.VSProject vsproject)
335+
{
336+
return vsproject.References.Cast<VSLangProj.Reference>().Where(r => r.SourceProject != null)
337+
.Select(r => r.SourceProject);
338+
}
339+
340+
private async Task<string> GetAssemblyNameAsync(Project project)
341+
{
342+
await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();
343+
var assNameProperty = project.Properties.Cast<Property>().FirstOrDefault(p =>
333344
{
334-
ThreadHelper.ThrowIfNotOnUIThread();
335-
return new ReferencedProject(r.SourceProject.FullName, r.Name);
336-
}).ToList();
345+
#pragma warning disable VSTHRD010 // Invoke single-threaded types on Main thread
346+
return p.Name == "AssemblyName";
347+
#pragma warning restore VSTHRD010 // Invoke single-threaded types on Main thread
348+
});
349+
return assNameProperty?.Value.ToString() ?? project.Name;
350+
}
351+
private async Task<ReferencedProject> GetReferencedProjectAsync(Project project)
352+
{
353+
await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();
354+
var assemblyName = await GetAssemblyNameAsync(project);
355+
return new ReferencedProject(project.FullName, assemblyName);
356+
}
357+
358+
private async Task<List<ReferencedProject>> GetReferencedProjectsFromDteAsync()
359+
{
360+
var vsproject = await GetProjectAsync();
361+
362+
if (vsproject == null)
363+
{
364+
return null;
365+
}
366+
return (await Task.WhenAll(GetReferencedSourceProjects(vsproject).Select(GetReferencedProjectAsync))).ToList();
337367

338368
}
339369

0 commit comments

Comments
 (0)