当前位置:  开发笔记 > 编程语言 > 正文

System.InvalidOperationException:无法生成临时类(result = 1)

如何解决《System.InvalidOperationException:无法生成临时类(result=1)》经验,为你挑选了4个好方法。

我使用.net 3.5开发了一个应用程序,并将它作为.exe部署在具有相同环境的许多机器上.但是,在一台特定的机器上,我收到以下错误.堆栈跟踪:


有关调用实时(JIT)调试而不是此对话框的详细信息,请参阅此消息的结尾.

System.InvalidOperationException: Unable to generate a temporary class (result=1).
error CS2001: Source file 'C:\WINDOWS\TEMP\wz58eig4.0.cs' could not be found
error CS2008: No inputs specified

   at System.Xml.Serialization.Compiler.Compile(Assembly parent, String ns, XmlSerializerCompilerParameters xmlParameters, Evidence evidence)
   at System.Xml.Serialization.TempAssembly.GenerateAssembly(XmlMapping[] xmlMappings, Type[] types, String defaultNamespace, Evidence evidence, XmlSerializerCompilerParameters parameters, Assembly assembly, Hashtable assemblies)
   at System.Xml.Serialization.TempAssembly..ctor(XmlMapping[] xmlMappings, Type[] types, String defaultNamespace, String location, Evidence evidence)
   at System.Xml.Serialization.XmlSerializer.GetSerializersFromCache(XmlMapping[] mappings, Type type)
   at System.Xml.Serialization.XmlSerializer.FromMappings(XmlMapping[] mappings, Type type)
   at System.Web.Services.Protocols.SoapClientType..ctor(Type type)
   at System.Web.Services.Protocols.SoapHttpClientProtocol..ctor()
   at SSOClient..ctor()
   at sc.tradesvc.SSOManager..ctor()
   at sc.tradesvc.SSOManager.get_Inst()
   at sc.cashflowgenerator.Controls.LoginForm.btnLogin_Click(Object sender, EventArgs e)
   at System.Windows.Forms.Control.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnClick(EventArgs e)
   at System.Windows.Forms.Button.PerformClick()
   at System.Windows.Forms.Form.ProcessDialogKey(Keys keyData)
   at System.Windows.Forms.TextBoxBase.ProcessDialogKey(Keys keyData)
   at System.Windows.Forms.Control.PreProcessMessage(Message& msg)
   at System.Windows.Forms.Control.PreProcessControlMessageInternal(Control target, Message& msg)
   at System.Windows.Forms.Application.ThreadContext.PreTranslateMessage(MSG& msg)

加载的装配:

mscorlib
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
    CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll

CashflowGenerator
    Assembly Version: 1.0.0.0
    Win32 Version: 1.0.0.0
    CodeBase: file:///C:/DATA/DEVEL/Output/CashflowGenerator.exe

System.Windows.Forms
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll

System
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll

System.Drawing
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll

System.Configuration
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll

System.Xml
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll

System.Core
    Assembly Version: 3.5.0.0
    Win32 Version: 3.5.21022.8 built by: RTM
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Core/3.5.0.0__b77a5c561934e089/System.Core.dll

System.Web.Services
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Web.Services/2.0.0.0__b03f5f7f11d50a3a/System.Web.Services.dll

**************JIT调试**************要启用实时(JIT)调试,此应用程序的.config文件或computer(machine.config)必须在system.windows.forms部分中设置jitDebugging值.还必须在启用调试的情况下编译应用程序.

例如:

启用JIT调试时,任何未处理的异常都将发送到计算机上注册的JIT调试器,而不是由此对话框处理.


有人可以帮我吗?

因为我是.net的新手,有人也可以告诉我为什么首先需要创建一个临时类?



1> 小智..:

我只是花了很多时间寻找答案,所以我想我会在这里添加它以免为别人带来一些麻烦.如果您使用xsd.exe工具生成您的cs,它可能已添加双数组[] [],其中数组应为[].在生成的cs文件中将[] []替换为[],然后重试.


你救了我很多挫折,好小费,thnx :)
这是"唯一的"正确答案.当我看到使用double arrays [] []生成的代码时,我感到很困惑.但很高兴你精确定位并弄清楚了这个工具.非常感谢.

2> Richard..:

XML序列化通过生成代码来执行序列化.这是在第一次需要时为此目的创建的临时程序集中完成的.

但是,这依赖于能够将程序集写入磁盘.1

您可以选择(1)给定正在运行进程写入权限的用户帐户(对于ASP.NET应用程序,这可能是一个坏主意).(2)使用SDK工具(sgen.exe)预生成(在开发/编译时)序列化程序集,然后使用(和deplot)该程序集.

1未解决的问题:存在用于在内存中动态创建程序集的API:为什么不这样做?


在VS08中,我认为项目属性中甚至还有一个勾选框来生成它.

3> BillRob..:

您只需要在%windir%\ Temp上提供列表文件夹内容和读取权限.

我在尝试解决问题时找到了这篇文章,并且没有给我的用户帐户写入权限.

来自微软



4> 小智..:

您需要授予Windows文件夹中的临时文件夹的权限.你的问题解决了...........

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有