Browse Source

More debug output when building (trying to find the cause of SD2-1485).

Run IProject.StartBuild on its own thread, so it runs outside of any locks taken by the build engine.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/3.0@3763 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 17 years ago
parent
commit
885afa299e
  1. 2
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/CSharpProject.cs
  2. 2
      src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/VBNetProject.cs
  3. 6
      src/Libraries/NRefactory/Test/Output/CSharp/CSharpOutputTest.cs
  4. 1
      src/Main/Base/Project/Configuration/AssemblyInfo.cs
  5. 4
      src/Main/Base/Project/Src/Gui/Workbench/SingleInstanceHelper.cs
  6. 14
      src/Main/Base/Project/Src/Project/BuildEngine.cs
  7. 2
      src/Main/Base/Project/Src/Project/IBuildFeedbackSink.cs
  8. 6
      src/Main/Base/Project/Src/Project/MSBuildEngine.cs
  9. 2
      src/Main/Core/Project/Configuration/AssemblyInfo.cs
  10. 2
      src/Main/ICSharpCode.Core.WinForms/Menu/MenuCommand.cs
  11. 9
      src/Main/ICSharpCode.Core.WinForms/Properties/AssemblyInfo.cs
  12. 2
      src/Main/ICSharpCode.Core.WinForms/ToolBar/ToolBarCommand.cs
  13. 5
      src/Main/ICSharpCode.SharpDevelop.BuildWorker/Program.cs
  14. 2
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Configuration/AssemblyInfo.cs
  15. 6
      src/Main/StartUp/Project/app.template.config

2
src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/CSharpProject.cs

@ -88,7 +88,7 @@ namespace CSharpBinding @@ -88,7 +88,7 @@ namespace CSharpBinding
public override void StartBuild(ProjectBuildOptions options, IBuildFeedbackSink feedbackSink)
{
if (this.MinimumSolutionVersion == 9) {
if (this.MinimumSolutionVersion == Solution.SolutionVersionVS2005) {
MSBuildEngine.StartBuild(this,
options,
feedbackSink,

2
src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/VBNetProject.cs

@ -109,7 +109,7 @@ namespace VBNetBinding @@ -109,7 +109,7 @@ namespace VBNetBinding
public override void StartBuild(ProjectBuildOptions options, IBuildFeedbackSink feedbackSink)
{
if (this.MinimumSolutionVersion == 9) {
if (this.MinimumSolutionVersion == Solution.SolutionVersionVS2005) {
MSBuildEngine.StartBuild(this,
options,
feedbackSink,

6
src/Libraries/NRefactory/Test/Output/CSharp/CSharpOutputTest.cs

@ -107,6 +107,12 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter @@ -107,6 +107,12 @@ namespace ICSharpCode.NRefactory.Tests.PrettyPrinter
TestProgram("public class Foo<T> where T : IDisposable, ICloneable { }");
}
[Test]
public void InterfaceWithOutParameters()
{
TestProgram("public interface ITest { void Method(out int a, ref double b); }");
}
[Test]
public void GenericClassDefinitionWithBaseType()
{

1
src/Main/Base/Project/Configuration/AssemblyInfo.cs

@ -20,6 +20,7 @@ using System.Runtime.CompilerServices; @@ -20,6 +20,7 @@ using System.Runtime.CompilerServices;
[assembly: Dependency("ICSharpCode.NRefactory", LoadHint.Always)]
[assembly: Dependency("ICSharpCode.SharpDevelop.Dom", LoadHint.Always)]
[assembly: Dependency("ICSharpCode.SharpDevelop.Widgets", LoadHint.Always)]
[assembly: Dependency("System.Core", LoadHint.Always)]
[assembly: Dependency("System.Drawing", LoadHint.Always)]
[assembly: Dependency("System.Xml", LoadHint.Always)]
[assembly: Dependency("System.Windows.Forms", LoadHint.Always)]

4
src/Main/Base/Project/Src/Gui/Workbench/SingleInstanceHelper.cs

@ -25,7 +25,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -25,7 +25,7 @@ namespace ICSharpCode.SharpDevelop.Gui
public static bool OpenFilesInPreviousInstance(string[] fileList)
{
LoggingService.Debug("Trying to pass arguments to previous instance...");
LoggingService.Info("Trying to pass arguments to previous instance...");
int currentProcessId = Process.GetCurrentProcess().Id;
string currentFile = Assembly.GetEntryAssembly().Location;
int number = new Random().Next();
@ -65,7 +65,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -65,7 +65,7 @@ namespace ICSharpCode.SharpDevelop.Gui
return false;
long fileNumber = m.WParam.ToInt64();
long openEvenIfProjectIsOpened = m.LParam.ToInt64();
LoggingService.Debug("Receiving custom message...");
LoggingService.Info("Receiving custom message...");
if (openEvenIfProjectIsOpened == 0 && ProjectService.OpenSolution != null) {
m.Result = new IntPtr(RESULT_PROJECT_IS_OPEN);
} else {

14
src/Main/Base/Project/Src/Project/BuildEngine.cs

@ -107,7 +107,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -107,7 +107,7 @@ namespace ICSharpCode.SharpDevelop.Project
EventHandler eh = null;
lock (lockObject) {
if (isCancelAllowed && !isCancelled) {
ICSharpCode.Core.LoggingService.Debug("Cancel build");
ICSharpCode.Core.LoggingService.Info("Cancel build");
isCancelled = true;
eh = Cancelled;
}
@ -261,6 +261,11 @@ namespace ICSharpCode.SharpDevelop.Project @@ -261,6 +261,11 @@ namespace ICSharpCode.SharpDevelop.Project
this.project = project;
}
public void DoStartBuild(object state)
{
project.StartBuild(options, this);
}
public void ReportError(BuildError error)
{
engine.ReportError(this, error);
@ -416,7 +421,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -416,7 +421,7 @@ namespace ICSharpCode.SharpDevelop.Project
hasDependencyErrors |= n.hasErrors;
}
ICSharpCode.Core.LoggingService.Debug("Start building " + node.project.Name);
ICSharpCode.Core.LoggingService.Info("Start building " + node.project.Name);
runningWorkers++;
projectsCurrentlyBuilding.Add(node);
if (hasDependencyErrors) {
@ -424,7 +429,8 @@ namespace ICSharpCode.SharpDevelop.Project @@ -424,7 +429,8 @@ namespace ICSharpCode.SharpDevelop.Project
node.hasErrors = true;
node.Done(false);
} else {
node.project.StartBuild(node.options, node);
// do not run "DoStartBuild" inside lock - run it async on the thread pool
System.Threading.ThreadPool.QueueUserWorkItem(node.DoStartBuild);
}
}
}
@ -458,7 +464,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -458,7 +464,7 @@ namespace ICSharpCode.SharpDevelop.Project
void OnBuildFinished(BuildNode node, bool success)
{
ICSharpCode.Core.LoggingService.Debug("Finished building " + node.project.Name);
ICSharpCode.Core.LoggingService.Info("Finished building " + node.project.Name);
lock (this) {
if (node.buildFinished) {
throw new InvalidOperationException("This node already finished building, do not call IBuildFeedbackSink.Done() multiple times!");

2
src/Main/Base/Project/Src/Project/IBuildFeedbackSink.cs

@ -28,7 +28,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -28,7 +28,7 @@ namespace ICSharpCode.SharpDevelop.Project
/// <summary>
/// Notifies the build engine that the build of a project has finished.
/// You sould not call any methods after the Done() call.
/// You should not call any methods after the Done() call.
/// This member is thread-safe.
/// </summary>
void Done(bool success);

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

@ -224,6 +224,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -224,6 +224,7 @@ namespace ICSharpCode.SharpDevelop.Project
if (buildInProcess) {
settings.BuildDoneCallback = delegate(bool success) {
LoggingService.Debug("BuildInProcess: Received BuildDoneCallback");
if (Interlocked.Exchange(ref isBuildingInProcess, 0) != 1) {
MessageService.ShowError("isBuildingInProcess should have been 1!");
}
@ -233,15 +234,18 @@ namespace ICSharpCode.SharpDevelop.Project @@ -233,15 +234,18 @@ namespace ICSharpCode.SharpDevelop.Project
Thread thread = new Thread(new ThreadStart(
delegate {
LoggingService.Debug("Acquiring InProcessMSBuildLock");
lock (MSBuildInternals.InProcessMSBuildLock) {
WorkerManager.RunBuildInProcess(job, settings);
LoggingService.Debug("Leaving InProcessMSBuildLock");
}
}));
thread.Name = "InProcess build thread";
thread.Name = "InProcess build thread " + thread.ManagedThreadId;
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
} else {
settings.BuildDoneCallback = delegate(bool success) {
LoggingService.Debug("BuildOutOfProcess: Received BuildDoneCallback");
logger.FlushCurrentError();
feedbackSink.Done(success);
};

2
src/Main/Core/Project/Configuration/AssemblyInfo.cs

@ -12,6 +12,8 @@ using System.Runtime.CompilerServices; @@ -12,6 +12,8 @@ using System.Runtime.CompilerServices;
[assembly: CLSCompliant(true)]
[assembly: StringFreezing()]
[assembly: Dependency("System.Xml", LoadHint.Always)]
[assembly: AssemblyTitle("ICSharpCode.Core")]
[assembly: AssemblyDescription("The ICSharpCode Core containing the AddInTree and service Subsystem")]
[assembly: AssemblyConfiguration("")]

2
src/Main/ICSharpCode.Core.WinForms/Menu/MenuCommand.cs

@ -115,7 +115,7 @@ namespace ICSharpCode.Core.WinForms @@ -115,7 +115,7 @@ namespace ICSharpCode.Core.WinForms
if (GetVisible() && Enabled) {
ICommand cmd = Command;
if (cmd != null) {
LoggingService.Debug("Run command " + cmd.GetType().FullName);
LoggingService.Info("Run command " + cmd.GetType().FullName);
cmd.Run();
}
}

9
src/Main/ICSharpCode.Core.WinForms/Properties/AssemblyInfo.cs

@ -12,8 +12,13 @@ using System.Runtime.CompilerServices; @@ -12,8 +12,13 @@ using System.Runtime.CompilerServices;
[assembly: CLSCompliant(true)]
[assembly: StringFreezing()]
[assembly: AssemblyTitle("ICSharpCode.Core")]
[assembly: AssemblyDescription("The ICSharpCode Core containing the AddInTree and service Subsystem")]
[assembly: Dependency("ICSharpCode.Core", LoadHint.Always)]
[assembly: Dependency("System.Xml", LoadHint.Always)]
[assembly: Dependency("System.Drawing", LoadHint.Always)]
[assembly: Dependency("System.Windows.Forms", LoadHint.Always)]
[assembly: AssemblyTitle("ICSharpCode.Core.WinForms")]
[assembly: AssemblyDescription("Windows Forms binding for ICSharpCode.Core")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

2
src/Main/ICSharpCode.Core.WinForms/ToolBar/ToolBarCommand.cs

@ -45,7 +45,7 @@ namespace ICSharpCode.Core.WinForms @@ -45,7 +45,7 @@ namespace ICSharpCode.Core.WinForms
}
if (menuCommand != null) {
menuCommand.Owner = caller;
LoggingService.Debug("Run command " + menuCommand.GetType().FullName);
LoggingService.Info("Run command " + menuCommand.GetType().FullName);
menuCommand.Run();
}
}

5
src/Main/ICSharpCode.SharpDevelop.BuildWorker/Program.cs

@ -151,7 +151,7 @@ namespace ICSharpCode.SharpDevelop.BuildWorker @@ -151,7 +151,7 @@ namespace ICSharpCode.SharpDevelop.BuildWorker
| ToolsetDefinitionLocations.ConfigurationFile);
engine.RegisterLogger(new ForwardingLogger(this));
engine.RegisterLogger(new ConsoleLogger(LoggerVerbosity.Diagnostic));
//engine.RegisterLogger(new ConsoleLogger(LoggerVerbosity.Diagnostic));
return engine;
}
@ -209,13 +209,16 @@ namespace ICSharpCode.SharpDevelop.BuildWorker @@ -209,13 +209,16 @@ namespace ICSharpCode.SharpDevelop.BuildWorker
engine.GlobalProperties.SetProperty(pair.Key, pair.Value);
}
Log("Loading " + currentJob.ProjectFileName);
Project project = LoadProject(engine, currentJob.ProjectFileName);
if (project == null)
return false;
if (string.IsNullOrEmpty(currentJob.Target)) {
Log("Building default target in " + currentJob.ProjectFileName);
return engine.BuildProject(project);
} else {
Log("Building target '" + currentJob.Target + "' in " + currentJob.ProjectFileName);
return engine.BuildProject(project, currentJob.Target.Split(';'));
}
}

2
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Configuration/AssemblyInfo.cs

@ -13,6 +13,8 @@ using System.Security.Permissions; @@ -13,6 +13,8 @@ using System.Security.Permissions;
[assembly: CLSCompliant(true)]
[assembly: StringFreezing()]
[assembly: Dependency("System.Core", LoadHint.Always)]
[assembly: AssemblyTitle("ICSharpCode.SharpDevelop.Dom")]
[assembly: AssemblyDescription("Code-completion library")]
[assembly: AssemblyConfiguration("")]

6
src/Main/StartUp/Project/app.template.config

@ -96,6 +96,12 @@ @@ -96,6 +96,12 @@
</layout>
</appender>
<appender name="DebugAppender" type="log4net.Appender.OutputDebugStringAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="[%thread] %-5level- %message%newline" />
</layout>
</appender>
<appender name="FileAppender" type="log4net.Appender.FileAppender">
<file value="SharpDevelopLog.txt" />
<layout type="log4net.Layout.PatternLayout">

Loading…
Cancel
Save