2
我使用CodeDom創建InMemory exe。這適用於Windows 8及更低版本。編譯的代碼在Windows 8.1中工作,如果我刪除窗體聲明,但我不想這樣做。有任何想法嗎? Windows 7 - 所有作品, Windows 8 - 所有作品, Windows 8.1 - 沒有聲明形式的作品。CodeDom編譯錯誤'Forms'不是Windows 8.1中的'Windows'的成員
參考框架
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")
的遵從代碼(部分):
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
沒錯......'Forms'不是Windows 8.1中'Windows'的成員。我自己不能說得更好...... –
讓我覺得奇怪的是我可以使用Windows.Forms.Form創建一個應用程序,它在8.1上運行良好,但不能通過使用CodeDom提供程序的InMemory .exe運行。使用codedom時它是不同名稱空間的成員嗎? – TroyS
此外,如果我用一個消息框調用函數,它在Windows 8.1中的InMemory exe中工作。那麼爲什麼這個工作和聲明一個表格不起作用呢? – TroyS