Ошибки при составлении содержимого бритвыC#

Место общения программистов C#
Ответить
Anonymous
 Ошибки при составлении содержимого бритвы

Сообщение Anonymous »

Это продолжение, которое не может скомпилировать бритвенный документ.
Я получаю несколько ошибок при составлении содержимого бритвы (не файл). Код такой: < /p>

Код: Выделить всё

var content = File.ReadAllText("RazorComponent.razor");
var assemblyName = "RazorComponent";
var assemblyPath = Path.GetDirectoryName(typeof(object).Assembly.Location)!;
var document = RazorSourceDocument.Create(content, assemblyName + ".razor");
var options = new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary);
var references = new MetadataReference[]
{
MetadataReference.CreateFromFile(Assembly.GetExecutingAssembly().Location),
MetadataReference.CreateFromFile(typeof(object).Assembly.Location),
MetadataReference.CreateFromFile(typeof(IComponent).Assembly.Location),
MetadataReference.CreateFromFile(typeof(RazorCompiledItemAttribute).Assembly.Location),
MetadataReference.CreateFromFile(Path.Combine(assemblyPath, "mscorlib.dll")),
MetadataReference.CreateFromFile(Path.Combine(assemblyPath, "System.dll")),
MetadataReference.CreateFromFile(Path.Combine(assemblyPath, "System.Core.dll")),
MetadataReference.CreateFromFile(Path.Combine(assemblyPath, "System.Runtime.dll"))
};

var engine = RazorProjectEngine.Create(
RazorConfiguration.Default,
RazorProjectFileSystem.Create("."),
builder =>
{
builder.ConfigureClass((doc, node) =>
{
node.BaseType = typeof(ComponentBase).FullName;
});
});

var codeDocument = engine.Process(source: document, fileKind: null, importSources: [], tagHelpers: []);

var csDocument = codeDocument.GetCSharpDocument();
var syntaxTree = CSharpSyntaxTree.ParseText(csDocument.GeneratedCode);
var compilation = CSharpCompilation.Create(assemblyName, [syntaxTree], references, options);

using var assemblyStrean = new MemoryStream();
var result = compilation.Emit(assemblyStrean);
Это не успешно result.success IS false и я получаю несколько ошибок:

Ошибка CS0115: 'template.executeasync ()': не подходящий метод. Текущий контекст
Ошибка CS0103: Имя «записать» не существует в текущем контексте

Проверка сгенерированного кода, я вижу, что сгенерированный класс называется шаблоном , унаследовать от ComponentBase и пытается переопределить метод, который не Existing, uneSync, unearync, unecistinc, unecistinc, unecistenc, unecistync, и пытается переопределить. Внутри этого, где он звонит, написать и writeliteral , чего, конечно, тоже не существует.
Чего мне не хватает?

Подробнее здесь: https://stackoverflow.com/questions/796 ... or-content
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»