diff --git a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
index 83c49a1687..6c59e4ed85 100644
--- a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
+++ b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
@@ -341,6 +341,7 @@
+
diff --git a/src/Main/Base/Project/Src/Services/DisplayBinding/AutoDetectDisplayBinding.cs b/src/Main/Base/Project/Src/Services/DisplayBinding/AutoDetectDisplayBinding.cs
index 26b0434dc7..21b39235fa 100644
--- a/src/Main/Base/Project/Src/Services/DisplayBinding/AutoDetectDisplayBinding.cs
+++ b/src/Main/Base/Project/Src/Services/DisplayBinding/AutoDetectDisplayBinding.cs
@@ -14,17 +14,6 @@ namespace ICSharpCode.SharpDevelop
///
public sealed class AutoDetectDisplayBinding : IDisplayBinding
{
- [DllImport("urlmon.dll", CharSet = CharSet.Unicode, ExactSpelling = true, SetLastError = false)]
- static extern unsafe int FindMimeFromData(
- IntPtr pBC,
- [MarshalAs(UnmanagedType.LPWStr)] string pwzUrl,
- byte* pBuffer,
- int cbSize,
- [MarshalAs(UnmanagedType.LPWStr)] string pwzMimeProposed,
- int dwMimeFlags,
- out IntPtr ppwzMimeOut,
- int dwReserved);
-
public bool IsPreferredBindingForFile(string fileName)
{
return false;
@@ -51,7 +40,7 @@ namespace ICSharpCode.SharpDevelop
string mime = "text/plain";
if (stream.Length > 0) {
stream.Position = 0;
- mime = FindMimeType(new BinaryReader(stream).ReadBytes(BUFFER_LENGTH));
+ mime = MimeTypeDetection.FindMimeType(new BinaryReader(stream).ReadBytes(BUFFER_LENGTH));
}
foreach (var codon in codons) {
stream.Position = 0;
@@ -68,20 +57,5 @@ namespace ICSharpCode.SharpDevelop
return bestMatch.Binding.CreateContentForFile(file);
}
-
- unsafe string FindMimeType(byte[] buffer)
- {
- fixed (byte *b = buffer) {
- const int FMFD_ENABLEMIMESNIFFING = 0x00000002;
- IntPtr mimeout;
- int result = FindMimeFromData(IntPtr.Zero, null, b, buffer.Length, null, FMFD_ENABLEMIMESNIFFING, out mimeout, 0);
-
- if (result != 0)
- throw Marshal.GetExceptionForHR(result);
- string mime = Marshal.PtrToStringUni(mimeout);
- Marshal.FreeCoTaskMem(mimeout);
- return mime;
- }
- }
}
}
diff --git a/src/Main/Base/Project/Src/Services/MimeTypeDetection.cs b/src/Main/Base/Project/Src/Services/MimeTypeDetection.cs
new file mode 100644
index 0000000000..36413253f6
--- /dev/null
+++ b/src/Main/Base/Project/Src/Services/MimeTypeDetection.cs
@@ -0,0 +1,37 @@
+// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
+// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace ICSharpCode.SharpDevelop
+{
+ public static class MimeTypeDetection
+ {
+ [DllImport("urlmon.dll", CharSet = CharSet.Unicode, ExactSpelling = true, SetLastError = false)]
+ static extern unsafe int FindMimeFromData(
+ IntPtr pBC,
+ [MarshalAs(UnmanagedType.LPWStr)] string pwzUrl,
+ byte* pBuffer,
+ int cbSize,
+ [MarshalAs(UnmanagedType.LPWStr)] string pwzMimeProposed,
+ int dwMimeFlags,
+ out IntPtr ppwzMimeOut,
+ int dwReserved);
+
+ public static unsafe string FindMimeType(byte[] buffer)
+ {
+ fixed (byte *b = buffer) {
+ const int FMFD_ENABLEMIMESNIFFING = 0x00000002;
+ IntPtr mimeout;
+ int result = FindMimeFromData(IntPtr.Zero, null, b, buffer.Length, null, FMFD_ENABLEMIMESNIFFING, out mimeout, 0);
+
+ if (result != 0)
+ throw Marshal.GetExceptionForHR(result);
+ string mime = Marshal.PtrToStringUni(mimeout);
+ Marshal.FreeCoTaskMem(mimeout);
+ return mime;
+ }
+ }
+ }
+}