如何使用GAC和NGEN部署C#应用程序

问题描述:

我有一个小型的C#工具,编译为Windows应用程序,其目标是包装其他工具的执行。这个工具会经常执行,有时候会每秒执行100次,这是我无法改变的;与此相同,将与Framework 2一起工作。对于此工具最重要的是短时间的热启动。如何使用GAC和NGEN部署C#应用程序

使用Visual Studio 2013我使用强名称密钥在程序集上签名。编译“Release”并获得“EXE”文件。接下来,我运行ngen/install app.exe

这就是我从这里和那里的一百万个帖子所能理解的。 现在我需要将这个app.exe移动到我的12台服务器上,并且我不知道是否应该在每台机器上安装ngen install,或者还应该将我的DEV windows/assembly文件夹结构复制到服务器窗口/程序集(当然,我的应用程序仅部件)。

我在一台服务器上安装了ngen install,但没有看到创建的程序集,因此需要更高级的磁头帮助。

谢谢 Pawel。

更新:我再次检查,我发现在x64组装。那么是否真的足够运行ngen?

RECAP:我将exe复制到服务器上,执行ngen install,检查该程序集是否已创建。我运行机器启动exe 500项 - 他们都在1分24秒内完成(从互斥体日志)。我重复测试,得到了完全相同的结果:1.24接下来,我做了ngen卸载并检查该程序集是否被删除,它是。我运行相同的测试,结果是1.26(lol)。考虑到它的稳定性和执行时间对我来说是完全令人满意的,我想我会放弃并停止使用GAC/NGEN的研究。但是,对这个场景以及我原来的问题的任何评论都很感激。

+0

开始一个过程每秒100次......我不认为ngen会帮助很多。我建议重新设计。考虑单个实例(服务可能)正在旋转。 –

+0

当然,我会重新设计,但它是从旧的和生锈的系统运行集成的唯一方法。我不指望ngen帮助很多;如果它可以做一点,那就足够了。 –

+0

大多数生锈的旧系统都可以创建/写入文件。有它这样做。用一个程序监视文件/文件夹。 –

您应该将应用程序需要运行的所有程序集部署到新机器上。那么如果你愿意,你可以选择NGEN。像WiX这样的安装程序可以为你做这两件事。请参阅here