Как собрать CodeCompileUnit из исходного кода? - PullRequest
6 голосов
/ 20 июля 2011

Как собрать CodeCompileUnit из исходного кода?

Как лучше всего анализировать исходный код (ы) C #?

Является ли CodeCompileUnit правильным выбором? и как?

Спасибо

Ответы [ 3 ]

8 голосов
/ 20 июля 2011

Вы получили это задом наперед, CodeCompileUnit существует для генерации исходного кода. Если у вас уже есть исходный код, вам нужен только класс, который наследует CodeDomProvider для компиляции кода. Как Microsoft.CSharp.CSharpCodeProvider или Microsoft.VisualBasic.VBCodeProvider.

Есть некоторые шансы, что вы спрашиваете о разборе существующего файла исходного кода. Это то, для чего предназначен System.CodeDom.Compiler.CodeParser. Нет никаких конкретных реализаций этого абстрактного класса, их никогда не будет. Это сообщение в блоге объясняет почему.

4 голосов
/ 27 октября 2012

Вы можете сделать это с CodeSnippetCompileUnit, который является подклассом CodeCompileUnit:

string source = @"
using System;
namespace SomeNamespace 
{
  public class Class0
  {     
  }
}";

var csu0 = new CodeSnippetCompileUnit(curSource);

Дополнительная информация:

Если у вас есть несколько юнитов, вы можете собрать их вместе для создания сборки:

CodeDomProvider provider = new CSharpCodeProvider();
CompilerResults results = provider.CompileAssemblyFromDom(new CompilerParameters(), csu0, csu1 /*arbitrary number*/);

Конечно, возможно, что классы из всех этих CodeSnippetCompileUnit ссылаются друг на друга.

4 голосов
/ 20 июля 2011

Ваш вопрос довольно расплывчатый.Вы ищете учебник?У вас есть конкретная задача, которую вы пытаетесь выполнить?Конкретные вопросы являются сущностью Stackoverflow.Кроме того, я просто дам вам несколько мест, которые могут быть полезны для начала:

...