Необходимо обработать набор данных с помощью динамического кода времени выполнения в C#

Я работал с динамическим кодом C# для процессов во время выполнения. Моя проблема в том, что я не могу передать объект набора данных в динамический код без получения:

"Не удалось загрузить файл или сборку" file:///C:\Users\mgallanx\AppData\Local\Temp\npbylo5z.dll'или одну из ее зависимостей. Система не может найти указанный файл."

Вот самая простая строка обработки набора данных, которую я использую:

mycodestring = "using System; 
    using System.Data; 
    namespace DaCodeNS 
     { 
       public static class DaCode 
        { 
          public static DataSet DaMethod( Dataset dsIn) 
          { 
            return dsIn; 
          }
        }
      }"

вызывающий метод устанавливает параметры для добавления System.dll а также System.Data.dllсоздает Object[] mp к одному элементу sIn,

Вызов тогда:

CompilerResults results = provider.CompileAssemblyFromSource (parameters, mycodestring);
var cls = results.CompiledAssembly.GetType ("DaCodeNS.DaCode");
var method = cls.GetMethod ("DaMethod", BindingFlags.Static | BindingFlags.Public);
return (DataSet)  method.Invoke (null, mp);

Это ломается в GetMethod линия. Я могу получить похожий код, передавая целые числа в игру, но меняя возвращаемое значение и передавая DataSet взрывается. Любая помощь приветствуется.

1 ответ

Скорее всего, вы не включили все ссылки, необходимые для компиляции / запуска вашего динамического кода. Простой способ найти все необходимые ссылки - создать автономный проект, который просто включает в себя код, который вы собираетесь скомпилировать. Затем посмотрите на ссылки, которые вам нужно было добавить в проект, чтобы он скомпилировался / запустился.

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