我正在开发一款游戏,我们一直在以JSON格式存储我们的关卡信息.这些级别非常大,所以我们切换到只将它们存储在普通的C#中:
例:
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行方法.无论如何编译模拟器都能正常工作.
这仍然是一个实验,所以我们意识到这是一个非常疯狂的情况.
有没有人知道如何从AOT(不是以编程方式创建的查询)在Dynamics AX视图中执行LEFT OUTER JOIN.
似乎找不到除INNER JOIN之外的任何其他方法,文档似乎表明它是不可能的.
这似乎是一个巨大的弱点,所以我认为如果他们不支持它,有一种推荐的方法来完成同样的事情.
谢谢
我有一个C#项目,我需要编译为本机二进制文件.我在这里读到:
http://www.mono-project.com/AOT
Mono可以将程序集预编译为以下两个选项之一:
我很确定我理解正确,但是--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)
我得到了相同的结果; 没有输出,没有图像文件或一般文件,没有.
我在这里错过了什么吗?
我有以下方法:
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.
我在链接页面上看不到任何相关信息.而且我无法理解为什么只有在手机上调试时才会出现这种行为.
别人能够理解这里发生了什么吗?:)
我试图在我的项目中使用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) 我无法弄清楚.我使用Angular-CLI生成我的项目.当我使用ng服务时,它无效地工作,也是ng build --prod.
为什么我需要弹出或更改webpack文件?DEFAULT webpack配置是否足以用于生产?如果没有,我需要添加什么(例如翻译(i18))?
在我开发的工作流程中,我需要以哪种方式处理webpack?
我们正在使用开发一个应用程序Angular 5。运行ng build --prod --aot并将dist文件夹部署到主软件包产生的dev服务器之后2.2MB on initial load。与8MB供应商捆绑包的大小(运行ng build --prod时)相比,它已经很小了,但仍然需要减小主捆绑包的大小。有什么方法可以减小主捆的尺寸?
Here are my dist files to reproduce yourself:
The breakdown:
我在通过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) aot ×10
angular ×5
webpack ×3
.net ×2
angular-cli ×2
angular5 ×2
c# ×2
jit ×2
xamarin.ios ×2
angular2-aot ×1
angularjs ×1
axapta ×1
build ×1
dataview ×1
dynamic ×1
ios ×1
lazy-loading ×1
mono ×1
monogame ×1
typescript ×1