Есть ли способ загрузить файл класса для сборки во время выполнения? - PullRequest
8 голосов
/ 14 ноября 2008

Я пытаюсь сделать что-то, что получает файл cs во время выполнения от пользователя, чтобы его сборка получала свойства, методы и т. Д.

Есть ли способ сделать это с помощью отражения в C #?

Ответы [ 2 ]

10 голосов
/ 14 ноября 2008

Чтобы скомпилировать файл на лету, вам нужно сделать что-то вроде этого (где sourceCode - это строка, содержащая код для компиляции):

CodeDomProvider codeProvider = new CSharpCodeProvider();
ICodeCompiler compiler = codeProvider.CreateCompiler();

// add compiler parameters
CompilerParameters compilerParams = new CompilerParameters();
compilerParams.CompilerOptions = "/target:library /optimize";
compilerParams.GenerateExecutable = false;
compilerParams.GenerateInMemory = true;         
compilerParams.IncludeDebugInformation = false;
compilerParams.ReferencedAssemblies.Add("mscorlib.dll");
compilerParams.ReferencedAssemblies.Add("System.dll");

// compile the code
CompilerResults results = compiler.CompileAssemblyFromSource(compilerParams, sourceCode);
4 голосов
/ 14 ноября 2008

Вы можете легко скомпилировать его, используя CSharpCodeProvider . Вы можете скачать исходный код для моего сниппета Snippy с веб-сайта C # на глубине . При этом используется CSharpCodeProvider, поэтому вы можете использовать его в качестве примера кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...