Browse Source

Make verbose MSBuild output even more verbose.

Fixed potential deadlock between IProjectContent.ReferencedContents lock and IProject.SyncRoot when switching a project to another target framework.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@5644 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
pull/1/head
Daniel Grunwald 15 years ago
parent
commit
08308c5729
  1. 1
      src/Main/Base/Project/Src/Project/MSBuildEngine/MSBuildEngine.cs
  2. 5
      src/Main/Base/Project/Src/Services/ParserService/ParseProjectContent.cs

1
src/Main/Base/Project/Src/Project/MSBuildEngine/MSBuildEngine.cs

@ -223,6 +223,7 @@ namespace ICSharpCode.SharpDevelop.Project
this.ReportTargetStartedEvents = true; this.ReportTargetStartedEvents = true;
this.ReportUnknownEvents = true; this.ReportUnknownEvents = true;
loggers.Add(new SDConsoleLogger(feedbackSink, LoggerVerbosity.Diagnostic)); loggers.Add(new SDConsoleLogger(feedbackSink, LoggerVerbosity.Diagnostic));
globalProperties["MSBuildTargetsVerbose"] = "true";
} }
//loggers.Add(new BuildLogFileLogger(project.FileName + ".log", LoggerVerbosity.Diagnostic)); //loggers.Add(new BuildLogFileLogger(project.FileName + ".log", LoggerVerbosity.Diagnostic));
foreach (IMSBuildAdditionalLogger loggerProvider in MSBuildEngine.AdditionalMSBuildLoggers) { foreach (IMSBuildAdditionalLogger loggerProvider in MSBuildEngine.AdditionalMSBuildLoggers) {

5
src/Main/Base/Project/Src/Services/ParserService/ParseProjectContent.cs

@ -82,9 +82,12 @@ namespace ICSharpCode.SharpDevelop
internal void ReInitialize1(IProgressMonitor progressMonitor) internal void ReInitialize1(IProgressMonitor progressMonitor)
{ {
var mscorlib = AssemblyParserService.GetRegistryForReference(new ReferenceProjectItem(project, "mscorlib")).Mscorlib;
// don't fetch mscorlib within lock - finding the correct registry might access the project, causing
// a deadlock between IProject.SyncRoot and the ReferencedContents lock
lock (ReferencedContents) { lock (ReferencedContents) {
ReferencedContents.Clear(); ReferencedContents.Clear();
AddReferencedContent(AssemblyParserService.GetRegistryForReference(new ReferenceProjectItem(project, "mscorlib")).Mscorlib); AddReferencedContent(mscorlib);
} }
// prevent adding event handler twice // prevent adding event handler twice
ProjectService.ProjectItemAdded -= OnProjectItemAdded; ProjectService.ProjectItemAdded -= OnProjectItemAdded;

Loading…
Cancel
Save