标签: aot

MonoTouch AOT编译器 - 大型方法失败

我正在开发一款游戏,我们一直在以JSON格式存储我们的关卡信息.这些级别非常大,所以我们切换到只将它们存储在普通的C#中:

  • 顶级方法具有用于级别/对象名称的switch语句
  • 有几种自动生成的方法使用标准属性初始化程序"新建"对象树

例:

private OurObject Autogenerated_Object1()
{
   return new OurObject { Name = "Object1", X = 1, Y = 2, Width = 200, Height = 100 };
}
Run Code Online (Sandbox Code Playgroud)

除了这些方法非常大并且具有其他对象的嵌套列表/字典等.

这加快了将级别从2-3秒加载到几分之一秒的时间(在Windows上).我们的数据大小也相当小,因为编译的IL与JSON相比.

问题是当我们在MonoDevelop中为MonoTouch编译这些时,我们得到:

mtouch exited with code 1

随着-v -v -v开启,我们可以看到错误:

MONO_PATH=/Users/jonathanpeppers/Desktop/DrawAStickman/Game/Code/iOS/DrawAStickman.iPhone/bin/iPhone/Release/DrawAStickmaniPhone.app /Developer/MonoTouch/usr/bin/arm-darwin-mono --aot=mtriple=armv7-darwin,full,static,asmonly,nodebug,outfile=/var/folders/4s/lcvdj54x0g72nrsw9vzq6nm80000gn/T/tmp54777849.tmp/monotouch.dll.7.s "/Users/jonathanpeppers/Desktop/DrawAStickman/Game/Code/iOS/DrawAStickman.iPhone/bin/iPhone/Release/DrawAStickmaniPhone.app/monotouch.dll"
AOT Compilation exited with code 134, command:
MONO_PATH=/Users/jonathanpeppers/Desktop/DrawAStickman/Game/Code/iOS/DrawAStickman.iPhone/bin/iPhone/Release/DrawAStickmaniPhone.app /Developer/MonoTouch/usr/bin/arm-darwin-mono --aot=mtriple=armv7-darwin,full,static,asmonly,nodebug,outfile=/var/folders/4s/lcvdj54x0g72nrsw9vzq6nm80000gn/T/tmp54777849.tmp/DrawAStickmanCore.dll.7.s "/Users/jonathanpeppers/Desktop/DrawAStickman/Game/Code/iOS/DrawAStickman.iPhone/bin/iPhone/Release/DrawAStickmaniPhone.app/DrawAStickmanCore.dll"
Mono Ahead of Time compiler - compiling assembly /Users/jonathanpeppers/Desktop/DrawAStickman/Game/Code/iOS/DrawAStickman.iPhone/bin/iPhone/Release/DrawAStickmaniPhone.app/DrawAStickmanCore.dll
* Assertion: should not be reached at ../../../../../mono/mono/mini/mini-arm.c:2758
Run Code Online (Sandbox Code Playgroud)

在编译AOT时,方法中的行数是否有限制?我们可以通过一些论证mtouch来解决这个问题吗?有些文件工作正常,但特别是导致错误的文件有3000行方法.无论如何编译模拟器都能正常工作.

这仍然是一个实验,所以我们意识到这是一个非常疯狂的情况.

.net c# xamarin.ios aot monogame

7
推荐指数
1
解决办法
1093
查看次数

动态AX视图中的LEFT JOIN

有没有人知道如何从AOT(不是以编程方式创建的查询)在Dynamics AX视图中执行LEFT OUTER JOIN.

似乎找不到除INNER JOIN之外的任何其他方法,文档似乎表明它是不可能的.

这似乎是一个巨大的弱点,所以我认为如果他们不支持它,有一种推荐的方法来完成同样的事情.

谢谢

dataview axapta aot dynamics-ax-2012

7
推荐指数
1
解决办法
8144
查看次数

使用mono aot/aot-full编译:似乎没有任何事情发生?

我有一个C#项目,我需要编译为本机二进制文件.我在这里读到:

http://www.mono-project.com/AOT

Mono可以将程序集预编译为以下两个选项之一:

  1. --aot:预编译的图像(与我看起来基本上和Ngen一样)
  2. --aot = full:完全编译为原始.exe的本机二进制实例

我很确定我理解正确,但是--aot = full选项可能是错误的.

但是,当我跑:

 mono.exe --aot=full --verbose program.exe  
Run Code Online (Sandbox Code Playgroud)

我没有输出,可执行文件的最后修改日期保持不变,并且没有生成任何文件.我也尝试过测试:

 mono.exe --aot --verbose program.exe 
Run Code Online (Sandbox Code Playgroud)

我得到了相同的结果; 没有输出,没有图像文件或一般文件,没有.

我在这里错过了什么吗?

.net c# mono aot

6
推荐指数
1
解决办法
3870
查看次数

System.ExecutionEngineException:仅在设备上的调试模式下尝试JIT编译方法(MonoTouch)

我有以下方法:

ApiResponse<T> PostMultipart<T>(string uploadUrl, NameValueCollection formParamters, params UploadFile[] uploadFiles);
Run Code Online (Sandbox Code Playgroud)

UploadFile只是一个Poco:

public class UploadFile
{
    public string FilePath { get; set; }
    public string ContentType { get; set; }
    public string ParameterName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

通过调用该方法,在模拟器上使用"Debug | iPhoneSimulator"和使用iOS 5.1.1和"Release | iPhone"的iPod Touch上的每个都可以正常工作.

但是当我开始在设备上调试应用程序("Debug | iPhone")时,我得到以下异常:

System.ExecutionEngineException:在使用--aot-only运行时尝试JIT编译方法'Xyz.Api.ApiClient:PostMultipart(string,System.Collections.Specialized.NameValueCollection,Xyz.Api.UploadFile [])'.有关更多信息,请参见http://docs.xamarin.com/ios/about/limitations.

我在链接页面上看不到任何相关信息.而且我无法理解为什么只有在手机上调试时才会出现这种行为.

别人能够理解这里发生了什么吗?:)

jit xamarin.ios aot ios

6
推荐指数
1
解决办法
3078
查看次数

使用Lazy Load模块+共享模块进行Angular 4 + AOT编译

我试图在我的项目中使用AOT编译,我有7个延迟加载的模块.AOT编译似乎工作(我的应用程序更快),但我的应用程序的大小比没有AOT编译大1 Mo.当我使用bundle analyzer插件查看发生了什么时,似乎导入了我的共享模块的所有地方(也就是说,几乎在我所有的延迟加载的模块中),它被重新导入,所以有一个共享模块的副本我的每一块!

有人有任何解决方案吗?

我的共享模块中没有任何提供程序.为了使AOT与延迟加载一起工作,我不得不将此配置用于webpack:

module.exports = function(env) {
  return webpackMerge({
    plugins: [
    new AotPlugin({
      tsConfigPath: 'tsconfig-aot.json',
      entryModule: helpers.root('src/app/app.module#AppModule')
    }),
    ]
  }, commonConfig, {
    devtool: 'source-map',

    output: {
      path: helpers.root('export/dist'),
      publicPath: '/',
      filename: '[name].[hash].js',
      chunkFilename: '[id].[hash].chunk.js'
    },

    module: {
      rules: [
      {
        test: /\.ts$/,
        use: ['@ngtools/webpack']
      }
      ]
    },

    plugins: [
    new webpack.NoEmitOnErrorsPlugin(),
    new webpack.optimize.UglifyJsPlugin({ // https://github.com/angular/angular/issues/10618
      compress: { warnings: false },
      mangle: {
        keep_fnames: true
      }
    }),
    new webpack.LoaderOptionsPlugin({
      htmlLoader: {
        minimize: false // workaround for ng2
      }
    }), …
Run Code Online (Sandbox Code Playgroud)

lazy-loading aot webpack angular2-aot angular

6
推荐指数
0
解决办法
747
查看次数

Angular 5和Webpack - 我真的需要它吗?

我无法弄清楚.我使用Angular-CLI生成我的项目.当我使用ng服务时,它无效地工作,也是ng build --prod.

为什么我需要弹出或更改webpack文件?DEFAULT webpack配置是否足以用于生产?如果没有,我需要添加什么(例如翻译(i18))?

在我开发的工作流程中,我需要以哪种方式处理webpack?

build aot webpack angular-cli angular5

6
推荐指数
1
解决办法
1671
查看次数

Angular 5-开发服务器上的主捆绑包文件太大

我们正在使用开发一个应用程序Angular 5。运行ng build --prod --aot并将dist文件夹部署到主软件包产生的dev服务器之后2.2MB on initial load。与8MB供应商捆绑包的大小(运行ng build --prod时)相比,它已经很小了,但仍然需要减小主捆绑包的大小。有什么方法可以减小主捆的尺寸?

网络

aot angular-cli angular angular5

6
推荐指数
1
解决办法
4917
查看次数

Lazy Loaded Modules with AOT - TypeError: '' is not a function when served from NGINX

Here are my dist files to reproduce yourself:

The breakdown:

  • My dist build, with AOT and Lazy Loaded modules works fine when served with npm packages webpack-dev-server or live-server
  • It is only when I copy dist to NGINX html directory and NGINX serves the files that I see Javascript errors in Firefox and Chrome
  • I have tried many different webpack configurations.
  • I am …

aot typescript webpack angular

6
推荐指数
1
解决办法
586
查看次数

Angular 6/7 AOT:动态模板渲染-加载模块的JitCompiler

我在通过API响应“即时”构建模板时遇到了问题,但仅在AoT构建中存在问题。

我从后端收到了这样的回复:

<h1>Title...</h1> 
<some-component></some-componen> 
<p>other content</p>
Run Code Online (Sandbox Code Playgroud)

我想像常规的Angular模板一样解析它。

我组件的简化代码如下所示:


        import {
          Compiler,
          Component,
          ComponentFactory,
          ComponentRef,
          Injector,
          Input,
          NgModule,
          OnChanges,
          OnDestroy,
          OnInit,
          ViewContainerRef
        } from '@angular/core';
        import { CommonModule } from '@angular/common';
        import { RouterModule } from '@angular/router';

        export async function createComponentFactory(compiler: Compiler, metadata: Component): Promise> {
          const cmpClass = class DynamicComponent {
          };
          const decoratedCmp = Component(metadata)(cmpClass);

          // IMPORT ALL MODULES HERE!!!
          @NgModule({imports: [CommonModule, RouterModule], declarations: [decoratedCmp]})
          class DynamicHtmlModule {
          }

          const moduleWithComponentFactory = await compiler.compileModuleAndAllComponentsAsync(DynamicHtmlModule);
          return moduleWithComponentFactory.componentFactories.find(x => x.componentType === …
Run Code Online (Sandbox Code Playgroud)

jit dynamic aot angular

6
推荐指数
1
解决办法
1933
查看次数

如何使用downgradeModule和angular-cli在角度混合应用程序中打开AOT?

我正在使用downgradeModule将AngularJS应用程序迁移到Angular 7(在此进行介绍:性能升级)。该文档的最后一部分指出,当我想使用AOT时,需要导入AppModule的NgModuleFactory。我正在使用angular-cli构建应用程序。是否可以引用在angular-cli构建中创建的ModuleFactory,从而为我的混合应用程序打开AOT?

aot angularjs angular-upgrade angular angular-hybrid

6
推荐指数
0
解决办法
170
查看次数