Глобальный импорт пространств имен VB.Net

У меня есть программа на C#, которая пытается динамически скомпилировать некоторый код VB.Net.

var vbc = new Microsoft.VisualBasic.VBCodeProvider(new Dictionary<string, string> 
           { { "CompilerVersion", "v4.0" } });
var parameters = new CompilerParameters(new[] {"mscorlib.dll", "System.Core.dll", 
    "System.Data.dll", "System.dll", "System.Xml.dll", "Microsoft.VisualBasic.dll"},
    @"MyFile.exe", false)
{
    GenerateInMemory = false,
    GenerateExecutable = true
};

CompilerResults results = vbc.CompileAssemblyFromFile(parameters, "file1.vb", "file2.vb", 
            "file3.vb", "file4.vb");

Работает, но с ошибками. Проблема заключается в том, что в реальном проекте Visual Basic по умолчанию автоматически импортируются следующие пространства имен:

System
System.Collections
System.Collections.Generic
System.Data
System.Diagnostics
System.Linq
System.Xml.Linq
System.Threading.Tasks
Microsoft.VisualBasic

Вы можете убедиться в этом сами, перейдя к созданию нового проекта Visual Basic, затем просмотрев свойства проекта и щелкнув "Ссылки". Вы увидите, что перечисленные выше пространства имен автоматически импортируются.

У меня вопрос, как я могу глобально автоматически импортировать эти пространства имен и передать его в VBCodeProvider поэтому он будет автоматически импортировать их при попытке компиляции?

Я нашел похожий вопрос с моим здесь, однако, никаких ответов не было предоставлено, кроме ОП, который делает что-то "хакерское", чего я предпочитаю не делать.

0 ответов

Другие вопросы по тегам