我有一个使用 Visual Studio 2008 构建的 .NET 3.5 类库项目。
如果我尝试 NGEN 此解决方案文件中的核心程序集,NGEN 永远不会完成,或者至少在我费心让它运行的时间内(比如过夜)不会完成。
还有其他人经历过吗?如果是这样,你解决了吗?如果你这样做了,又是怎样做的呢?您采取了哪些步骤?
如果这是 NGEN 中的错误,我如何将其发布给 Microsoft?我有一个连接帐户,但我应该在哪里发布此特定产品的错误报告,而不是 .NET 类(我知道该去哪里获取)。
有问题的类库可以在这里找到:
-
http://svn.vkarlsen.no:81/svn/LVK/LVK_3_5/trunk http://svn.vkarlsen.no:81/svn/LVK/LVK_3_5/trunk(颠覆1.6存储库)
有问题的程序集是 LVK.Core 程序集。
Update:.NET 4.0 的 NGEN 已完成,但花了近 15 分钟才完成:
time /t
12:44:39
ngen install lvk.core.dll
Microsoft (R) CLR Native Image Generator - Version 4.0.30319.1
Copyright (c) Microsoft Corporation. All rights reserved.
Installing assembly C:\Dev\VS.NET\LVK\LVK.Core\bin\x86\Debug\lvk.core.dll
Compiling assembly C:\Dev\VS.NET\LVK\LVK.Core\bin\x86\Debug\lvk.core.dll (CLR v2.0.50727) ...
LVK.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=8dbb1dd9b1276c0a <debug>
time /t
12:59:24
更新#2:创建问题于微软连接 https://connect.microsoft.com/VisualStudio/feedback/details/551381/ngen-never-completes-for-a-particular-assembly.
后来发现原因是我的实现Tuple<...>
通用类。
事实证明,通过 NGEN 调用 JIT 进程时,将为每个进程创建 NGEN 版本。Tuple<...>
类型为以下类型:
- 适用于所有参考类型的通用版本
- 每种值类型都有一个版本
由于我有多达 16 个通用参数的元组版本,只是为了更好地衡量,NGEN 正忙着为一个Tuple<T1, T2, T3, T4, ..., T16>
对于所有值类型。
我将类型数量减少到更少的泛型参数,NGEN 现在已完成。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)