Документация по компиляции C ++ / CLI с использованием каркасов классов CodeDom несколько отсутствует.
Справочная информация: я пытаюсь написать системные тесты для части программного обеспечения, которую я написал. Программное обеспечение генерирует код, и я хочу проверить, что этот код может быть скомпилирован и что скомпилированный код работает как задумано.
Код для компиляции и тестирования находится в нескольких исходных файлах. Я хочу скомпилировать исходный файл в сборку, а затем динамически вызывать методы в нем. Я экспериментировал с созданием одних и тех же исходных текстов на C #, и у меня была успешная сборка и тестирование за несколько минут Компилятор C ++ всегда выдает исключение System.NotImplementedException.
Вот код, который взрывает меня:
namespace CppCompilerTest {
class Program {
static void Main(string[] args) {
try {
string strSourceDir = @"D:\Projects\CppCompilerTest\CppSource";
using (var codeProvider = new CppCodeProvider7()) {
var options = new CompilerParameters { GenerateExecutable = false, GenerateInMemory = false };
options.ReferencedAssemblies.Add("System.dll");
CompilerResults results = codeProvider.CompileAssemblyFromFile(
options,
new[] {
Path.Combine(strSourceDir, "SourceFile1.cpp"),
Path.Combine(strSourceDir, "SourceFile2.cpp")
}
);
}
} catch(Exception ex) {
Console.WriteLine(ex);
}
Console.WriteLine("Press any key to continue");
Console.ReadKey();
}
}
}
Полностью ли я что-то упустил? Мне интересно, может быть, путь cl.exe - более быстрый маршрут ...