Browse Source

Make ICSharpCode.SharpDevelop.BuildWorker 32-bit only - if SharpDevelop.exe is 32-bit, BuildWorker must also be 32-bit to avoid using a mixture of 32-bit and 64-bit MSBuild when compiling a solution.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@2899 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 18 years ago
parent
commit
f4193b59f9
  1. 2
      src/Main/Base/Project/Src/Gui/Dialogs/SharpDevelopAboutPanels.cs
  2. 6
      src/Main/Base/Project/Src/Gui/WorkbenchSingleton.cs
  3. 1
      src/Main/Base/Project/Src/Project/MSBuildEngine.cs
  4. 8
      src/Main/ICSharpCode.SharpDevelop.BuildWorker/BuildJob.cs
  5. 2
      src/Main/ICSharpCode.SharpDevelop.BuildWorker/ICSharpCode.SharpDevelop.BuildWorker.csproj
  6. 3
      src/Main/ICSharpCode.SharpDevelop.BuildWorker/Program.cs

2
src/Main/Base/Project/Src/Gui/Dialogs/SharpDevelopAboutPanels.cs

@ -108,7 +108,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -108,7 +108,7 @@ namespace ICSharpCode.SharpDevelop.Gui
}
string PROCESSOR_ARCHITEW6432 = Environment.GetEnvironmentVariable("PROCESSOR_ARCHITEW6432");
if (!string.IsNullOrEmpty(PROCESSOR_ARCHITEW6432)) {
str += "Running under WOW6432, processor architecture: " + PROCESSOR_ARCHITEW6432;
str += "Running under WOW6432, processor architecture: " + PROCESSOR_ARCHITEW6432 + Environment.NewLine;
}
} catch {}
try {

6
src/Main/Base/Project/Src/Gui/WorkbenchSingleton.cs

@ -162,7 +162,11 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -162,7 +162,11 @@ namespace ICSharpCode.SharpDevelop.Gui
if (method == null) {
throw new ArgumentNullException("method");
}
ctl.BeginInvoke(method, arguments);
try {
ctl.BeginInvoke(method, arguments);
} catch (InvalidOperationException ex) {
LoggingService.Warn("Error in SafeThreadAsyncCall", ex);
}
}
}

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

@ -171,6 +171,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -171,6 +171,7 @@ namespace ICSharpCode.SharpDevelop.Project
}
BuildJob job = new BuildJob();
job.IntPtrSize = IntPtr.Size;
job.ProjectFileName = project.FileName;
job.EventMask = EventTypes.All & ~ControllableEvents;
if (ReportMessageEvents)

8
src/Main/ICSharpCode.SharpDevelop.BuildWorker/BuildJob.cs

@ -17,6 +17,14 @@ namespace ICSharpCode.SharpDevelop.BuildWorker @@ -17,6 +17,14 @@ namespace ICSharpCode.SharpDevelop.BuildWorker
[Serializable]
public class BuildJob
{
/// <summary>
/// The value of IntPtr.Size on the host. The build worker will report an error if its IntPtr.Size
/// doesn't match. This is a safety feature to prevent compiling half of a solution using 32-bit MSBuild
/// and the other half using 64-bit MSBuild.
/// </summary>
public int IntPtrSize { get; set; }
public string ProjectFileName { get; set; }
public string Target { get; set; }

2
src/Main/ICSharpCode.SharpDevelop.BuildWorker/ICSharpCode.SharpDevelop.BuildWorker.csproj

@ -37,7 +37,7 @@ @@ -37,7 +37,7 @@
<RegisterForComInterop>False</RegisterForComInterop>
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
<BaseAddress>4194304</BaseAddress>
<PlatformTarget>AnyCPU</PlatformTarget>
<PlatformTarget>x86</PlatformTarget>
<FileAlignment>4096</FileAlignment>
</PropertyGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" />

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

@ -199,6 +199,9 @@ namespace ICSharpCode.SharpDevelop.BuildWorker @@ -199,6 +199,9 @@ namespace ICSharpCode.SharpDevelop.BuildWorker
bool DoBuild()
{
if (currentJob.IntPtrSize != IntPtr.Size)
throw new ApplicationException("Incompatible IntPtr.Size between host and worker");
engine.GlobalProperties.Clear();
foreach (KeyValuePair<string, string> pair in currentJob.Properties) {
engine.GlobalProperties.SetProperty(pair.Key, pair.Value);

Loading…
Cancel
Save