积极答复者
VS2015 VSIX 无法编译新建的 Custom Tool Window 项

问题
-
VS2015 VSIX 无法编译新建的 Custom Tool Window 项
1>------ 已启动生成: 项目: JSBQ, 配置: Debug Any CPU ------ 1>E:\JSBQ\packages\Microsoft.VSSDK.BuildTools.14.2.25123\tools\VSSDK\Microsoft.VsSDK.Common.targets(126,5): error MSB4018: “VSCTCompiler”任务意外失败。 1>E:\JSBQ\packages\Microsoft.VSSDK.BuildTools.14.2.25123\tools\VSSDK\Microsoft.VsSDK.Common.targets(126,5): error MSB4018: System.OutOfMemoryException: 内存不足。 1>E:\JSBQ\packages\Microsoft.VSSDK.BuildTools.14.2.25123\tools\VSSDK\Microsoft.VsSDK.Common.targets(126,5): error MSB4018: 在 System.Drawing.Image.FromFile(String filename, Boolean useEmbeddedColorManagement) 1>E:\JSBQ\packages\Microsoft.VSSDK.BuildTools.14.2.25123\tools\VSSDK\Microsoft.VsSDK.Common.targets(126,5): error MSB4018: 在 Microsoft.VisualStudio.CommandTable.BitmapItem.Read(TextReadVSCTCStream s, XmlElement itemNode) 1>E:\JSBQ\packages\Microsoft.VSSDK.BuildTools.14.2.25123\tools\VSSDK\Microsoft.VsSDK.Common.targets(126,5): error MSB4018: 在 Microsoft.VisualStudio.CommandTable.ItemList.Read(TextReadVSCTCStream s, XmlElement listNode) 1>E:\JSBQ\packages\Microsoft.VSSDK.BuildTools.14.2.25123\tools\VSSDK\Microsoft.VsSDK.Common.targets(126,5): error MSB4018: 在 Microsoft.VisualStudio.CommandTable.CommandTable.ReadCMDSSection(TextReadVSCTCStream s, XmlElement listNode) 1>E:\JSBQ\packages\Microsoft.VSSDK.BuildTools.14.2.25123\tools\VSSDK\Microsoft.VsSDK.Common.targets(126,5): error MSB4018: 在 Microsoft.VisualStudio.CommandTable.CommandTable.Read(TextReadVSCTCStream s) 1>E:\JSBQ\packages\Microsoft.VSSDK.BuildTools.14.2.25123\tools\VSSDK\Microsoft.VsSDK.Common.targets(126,5): error MSB4018: 在 Microsoft.VisualStudio.CommandTable.CommandTable.Read(String fileName, ReadOptions ro, IMessageProcessor errorProcessor) 1>E:\JSBQ\packages\Microsoft.VSSDK.BuildTools.14.2.25123\tools\VSSDK\Microsoft.VsSDK.Common.targets(126,5): error MSB4018: 在 Microsoft.VisualStudio.CommandTable.CommandTable.Read(String fileName, IMessageProcessor errorProcessor) 1>E:\JSBQ\packages\Microsoft.VSSDK.BuildTools.14.2.25123\tools\VSSDK\Microsoft.VsSDK.Common.targets(126,5): error MSB4018: 在 Microsoft.VisualStudio.CommandTable.Compiler.Compile() 1>E:\JSBQ\packages\Microsoft.VSSDK.BuildTools.14.2.25123\tools\VSSDK\Microsoft.VsSDK.Common.targets(126,5): error MSB4018: 在 Microsoft.VisualStudio.CommandTable.VSCTCompiler.Execute() ========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
严重性 代码 说明 项目 文件 行 列 禁止显示状态 错误 “VSCTCompiler”任务意外失败。 System.OutOfMemoryException: 内存不足。 在 System.Drawing.Image.FromFile(String filename, Boolean useEmbeddedColorManagement) 在 Microsoft.VisualStudio.CommandTable.BitmapItem.Read(TextReadVSCTCStream s, XmlElement itemNode) 在 Microsoft.VisualStudio.CommandTable.ItemList.Read(TextReadVSCTCStream s, XmlElement listNode) 在 Microsoft.VisualStudio.CommandTable.CommandTable.ReadCMDSSection(TextReadVSCTCStream s, XmlElement listNode) 在 Microsoft.VisualStudio.CommandTable.CommandTable.Read(TextReadVSCTCStream s) 在 Microsoft.VisualStudio.CommandTable.CommandTable.Read(String fileName, ReadOptions ro, IMessageProcessor errorProcessor) 在 Microsoft.VisualStudio.CommandTable.CommandTable.Read(String fileName, IMessageProcessor errorProcessor) 在 Microsoft.VisualStudio.CommandTable.Compiler.Compile() 在 Microsoft.VisualStudio.CommandTable.VSCTCompiler.Execute() JSBQ
出现内存不足的错误
我没有修改任何自动生成的代码
本机内存8G 已使用60%
- 已编辑 haozi23333 2016年6月1日 2:56 补充
答案
-
用.NET Reflector获取了一下源代码
public static Image FromFile(string filename, bool useEmbeddedColorManagement) { int num; if (!File.Exists(filename)) { IntSecurity.DemandReadFileIO(filename); throw new FileNotFoundException(filename); } filename = Path.GetFullPath(filename); IntPtr zero = IntPtr.Zero; if (useEmbeddedColorManagement) { num = SafeNativeMethods.Gdip.GdipLoadImageFromFileICM(filename, out zero); } else { num = SafeNativeMethods.Gdip.GdipLoadImageFromFile(filename, out zero); } if (num != 0) { throw SafeNativeMethods.Gdip.StatusException(num); } num = SafeNativeMethods.Gdip.GdipImageForceValidation(new HandleRef(null, zero)); if (num != 0) { SafeNativeMethods.Gdip.GdipDisposeImage(new HandleRef(null, zero)); throw SafeNativeMethods.Gdip.StatusException(num); } Image image = CreateImageObject(zero); EnsureSave(image, filename, null); return image; }
num=3 抛出这个异常
case 3:
return new OutOfMemoryException(SR.GetString("GdiplusOutOfMemory"));解决方法可尝试一下看下VSIX中的资源文件,新创建一个Console项目,对这个资源文件进行
Image.FromFile()调用操作看下结果
专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms
- 已编辑 Shuanghua Li 2016年6月1日 4:29
- 已建议为答案 Jack Zhai-MSFTMicrosoft contingent staff, Moderator 2016年6月13日 10:55
- 已标记为答案 Jack Zhai-MSFTMicrosoft contingent staff, Moderator 2016年6月15日 12:30
全部回复
-
用.NET Reflector获取了一下源代码
public static Image FromFile(string filename, bool useEmbeddedColorManagement) { int num; if (!File.Exists(filename)) { IntSecurity.DemandReadFileIO(filename); throw new FileNotFoundException(filename); } filename = Path.GetFullPath(filename); IntPtr zero = IntPtr.Zero; if (useEmbeddedColorManagement) { num = SafeNativeMethods.Gdip.GdipLoadImageFromFileICM(filename, out zero); } else { num = SafeNativeMethods.Gdip.GdipLoadImageFromFile(filename, out zero); } if (num != 0) { throw SafeNativeMethods.Gdip.StatusException(num); } num = SafeNativeMethods.Gdip.GdipImageForceValidation(new HandleRef(null, zero)); if (num != 0) { SafeNativeMethods.Gdip.GdipDisposeImage(new HandleRef(null, zero)); throw SafeNativeMethods.Gdip.StatusException(num); } Image image = CreateImageObject(zero); EnsureSave(image, filename, null); return image; }
num=3 抛出这个异常
case 3:
return new OutOfMemoryException(SR.GetString("GdiplusOutOfMemory"));解决方法可尝试一下看下VSIX中的资源文件,新创建一个Console项目,对这个资源文件进行
Image.FromFile()调用操作看下结果
专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms
- 已编辑 Shuanghua Li 2016年6月1日 4:29
- 已建议为答案 Jack Zhai-MSFTMicrosoft contingent staff, Moderator 2016年6月13日 10:55
- 已标记为答案 Jack Zhai-MSFTMicrosoft contingent staff, Moderator 2016年6月15日 12:30