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

标签 c# .net deployment gac ngen

我有一个小型 C# 工具,编译为 Windows 应用程序,其目标是包装其他工具的执行。这个工具会被频繁执行,有时每秒执行 100 次,这是我无法改变的;与框架 2 相同。对于此工具来说,最重要的是短时间热启动。

使用 Visual Studio 2013,我使用强名称 key 对程序集进行了签名。编译“Release”并得到“EXE”文件。接下来我运行 ngen/install app.exe

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

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

谢谢 帕维尔。

更新:我再次检查,发现 x64 中的程序集。那么仅运行 ngen 真的就足够了吗?

回顾:我将 exe 复制到服务器并进行了 ngen 安装,检查了程序集是否已创建。我运行机器来启动 500 个 exe 项目 - 它们全部在 1 分 24 秒内完成(来自互斥日志)。我重复测试并得到完全相同的结果: 1.24 接下来我执行 ngen uninstall 并检查程序集是否已删除,确实如此。我进行了同样的测试,结果是 1.26(笑)。考虑到它的稳定性和执行时间对我来说完全令人满意,我想我会放弃它并停止研究使用 GAC/NGEN。但对这种情况和我原来的问题的任何评论都会受到赞赏。

最佳答案

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

关于c# - 如何使用 GAC 和 NGEN 部署 C# 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24550840/

相关文章:

.net - XmlSerializer 添加空 "<script/>"标签到输出

c# - Umbraco 媒体没有批准的文件类型

java - 在 Tomcat 6.0.20 中更新现有 webapp 时出现问题

ruby-on-rails - 使用 capistrano 部署 rails 应用程序的 bitbucket 存储库问题

c# - 数据表选择返回数组索引越界

c# - 在数据库列中存储尺寸(连同图像)?

c# - 向文件添加新的元数据属性

c# - Azure服务总线: ReceiveMessagesAsync returns only a subset

.htaccess - 如何使用 `scp` 部署网站的 `.htaccess` 文件?

c# - 转换 Nullable DateTime 时,LINQ to Entities 无法识别方法 'System.String ToString()' 方法