本文整理汇总了C#中AssemblyDefinitionDynamic.SaveCpp方法的典型用法代码示例。如果您正苦于以下问题:C# AssemblyDefinitionDynamic.SaveCpp方法的具体用法?C# AssemblyDefinitionDynamic.SaveCpp怎么用?C# AssemblyDefinitionDynamic.SaveCpp使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类AssemblyDefinitionDynamic
的用法示例。
在下文中一共展示了AssemblyDefinitionDynamic.SaveCpp方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Compile
//.........这里部分代码省略.........
// correctly
tr.Start (TimeReporter.TimerType.CreateTypeTotal);
module.CreateContainer ();
importer.AddCompiledAssembly (assembly);
tr.Stop (TimeReporter.TimerType.CreateTypeTotal);
references_loader.LoadReferences (module);
tr.Start (TimeReporter.TimerType.PredefinedTypesInit);
if (!ctx.BuiltinTypes.CheckDefinitions (module))
return false;
tr.Stop (TimeReporter.TimerType.PredefinedTypesInit);
references_loader.LoadModules (assembly, module.GlobalRootNamespace);
#else
var assembly = new AssemblyDefinitionDynamic (module, output_file_name, output_file);
module.SetDeclaringAssembly (assembly);
var importer = new ReflectionImporter (module, ctx.BuiltinTypes);
assembly.Importer = importer;
var loader = new DynamicLoader (importer, ctx);
loader.LoadReferences (module);
if (!ctx.BuiltinTypes.CheckDefinitions (module))
return false;
if (!assembly.Create (AppDomain.CurrentDomain, AssemblyBuilderAccess.Save))
return false;
module.CreateContainer ();
loader.LoadModules (assembly, module.GlobalRootNamespace);
#endif
module.InitializePredefinedTypes ();
tr.Start (TimeReporter.TimerType.ModuleDefinitionTotal);
module.Define ();
tr.Stop (TimeReporter.TimerType.ModuleDefinitionTotal);
if (Report.Errors > 0)
return false;
if (settings.DocumentationFile != null) {
var doc = new DocumentationBuilder (module);
doc.OutputDocComment (output_file, settings.DocumentationFile);
}
assembly.Resolve ();
if (Report.Errors > 0)
return false;
tr.Start (TimeReporter.TimerType.EmitTotal);
if (settings.Target == Target.JavaScript) {
assembly.EmitJs ();
} else if (settings.Target == Target.Cpp) {
assembly.EmitCpp ();
} else {
assembly.Emit ();
}
tr.Stop (TimeReporter.TimerType.EmitTotal);
if (Report.Errors > 0 && (settings.Target & Target.IsTextTarget) == 0) {
return false;
}
if (settings.Target != Target.JavaScript) {
tr.Start (TimeReporter.TimerType.CloseTypes);
module.CloseContainer ();
tr.Stop (TimeReporter.TimerType.CloseTypes);
tr.Start (TimeReporter.TimerType.Resouces);
if (!settings.WriteMetadataOnly)
assembly.EmbedResources ();
tr.Stop (TimeReporter.TimerType.Resouces);
}
if (Report.Errors > 0 && (settings.Target & Target.IsTextTarget) == 0)
return false;
if (settings.Target == Target.JavaScript) {
assembly.SaveJs ();
} else if (settings.Target == Target.Cpp) {
assembly.SaveCpp ();
} else {
assembly.Save ();
}
#if STATIC
references_loader.Dispose ();
#endif
tr.StopTotal ();
tr.ShowStats ();
return Report.Errors == 0;
}