Ошибка компиляции CodeDom Forms не является членом Windows в Windows 8.1

Я использую 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

person Troy Mitchel    schedule 15.01.2014    source источник
comment
Правильно ... Forms не является членом Windows в Windows 8.1. Я и сам не мог бы сказать лучше ...   -  person Federico Berasategui    schedule 16.01.2014
comment
Что мне кажется странным, так это то, что я могу создать приложение с помощью Windows.Forms.Form, и оно отлично работает на 8.1, но не через InMemory .exe с помощью поставщика CodeDom. Является ли он членом другого пространства имен при использовании codedom?   -  person Troy Mitchel    schedule 16.01.2014
comment
Кроме того, если я вызываю функцию с окном сообщения, она работает в InMemory exe в Windows 8.1. Так почему же это работает, а объявление формы не работает?   -  person Troy Mitchel    schedule 16.01.2014


Ответы (1)


Как заявил HighCore в комментарии (Правильно ... Forms не является членом Windows в Windows 8.1. Я не мог бы сказать это лучше ... -).

Поэтому я поместил все элементы управления на панель вместо этого (в исполняемый файл .exe), а затем передал их обратно вызывающему приложению и вместо этого отобразил панель там. Получилось хорошо.

person Troy Mitchel    schedule 22.05.2014