2014-01-15 74 views
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 
+0

沒錯......'Forms'不是Windows 8.1中'Windows'的成員。我自己不能說得更好...... –

+0

讓我覺得奇怪的是我可以使用Windows.Forms.Form創建一個應用程序,它在8.1上運行良好,但不能通過使用CodeDom提供程序的InMemory .exe運行。使用codedom時它是不同名稱空間的成員嗎? – TroyS

+0

此外,如果我用一個消息框調用函數,它在Windows 8.1中的InMemory exe中工作。那麼爲什麼這個工作和聲明一個表格不起作用呢? – TroyS

回答

0

由於HighCore的評論說(這是正確的? Forms在Windows 8.1中不是Windows的成員,我自己也不能說得更好 - - )。

因此,我所做的是將所有控件放在面板上(而不是內存中的.exe),然後將其傳回給調用應用程序,並在其中顯示面板。鍛鍊得很好。

相關問題