Я использую CodeDom для создания InMemory exe. Это отлично работает для Windows 8 и ниже. Скомпилированный код работает в Windows 8.1, если я удалю декларацию форм, но я не хочу этого делать. Любые идеи? Windows 7 - Все работает, Windows 8 - Все работает, Windows 8.1 - Работает без объявления форм.
Ссылочная структура
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
в Windows 8.1. Я и сам не мог бы сказать лучше ... - person Federico Berasategui   schedule 16.01.2014