我正在使用CodeDom创buildInMemory exe。 这适用于Windows 8及更低版本。 编译的代码在Windows 8.1中工作,如果我删除表单声明,但我不想这样做。 有任何想法吗? Windows 7 – 所有作品,Windows 8 – 所有作品,Windows 8.1 – 没有声明forms的作品。
参考框架
provOptions.Add("CompilerVersion","v4.0")
CodeDom引用程序集:
vbParams.ReferencedAssemblies.Add("mscorlib.dll") vbParams.ReferencedAssemblies.Add("System.dll") vbParams.ReferencedAssemblies.Add("System.Windows.Forms.dll") vbParams.ReferencedAssemblies.Add("Microsoft.VisualBasic.dll") vbParams.ReferencedAssemblies.Add("System.Data.dll") vbParams.ReferencedAssemblies.Add("System.Xml.dll") vbParams.ReferencedAssemblies.Add("System.Data.Linq.dll") vbParams.ReferencedAssemblies.Add("System.Core.dll") vbParams.ReferencedAssemblies.Add("System.Drawing.dll") vbParams.ReferencedAssemblies.Add("System.Data.DataSetExtensions.dll")
编码(部分):
CompileAssemblyFromDom抛出FileNotFoundException
Imports System Imports System.Data Imports System.Windows.Forms Imports System.Math Imports Microsoft.VisualBasic Imports System.Collections.Generic Imports System.Data.DaTarow Imports System.Linq Imports System.Drawing Imports System.Xml Imports System.Collections Namespace Evaluator Public Module GlobalVariables Public DialogBox As System.Windows.Forms.Form **(this crashes in windows 8.1)** End Module more code... Public Class Evaluator 'EDITED 1/16/13 - Invoking this function will show the message 'Box which is part of the Forms namespace Public Function TestFunction() As Object MessageBox.Show("Lorem ipsum dolor sit amet.") End Function End Class End Namespace
正如HighCore在评论中所说(这是正确的…… Forms在Windows 8.1中不是Windows的成员,我自己也不能说得更好 – )。
所以我做的是把所有的控件放在一个面板上(在In-Memory.exe中),然后把它传回给调用的应用程序,并在那里显示面板。 工作得很好。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。