我最近使用限制性更强的防火墙将我的开发环境(VMWare 上的 VS.NET 2008 SP1)移到了新网络。在后续构建期间,许可证编译器 (lc.exe) 需要很长时间才能完成(几分钟)。我认为它正在超时,因为它无法通过防火墙连接,但我在事件日志中看不到超时或构建错误的证据。
您是否知道 lc.exe 是否确实尝试与供应商的许可证服务器进行通信,如果是,它是否使用非 http 端口来这样做?谷歌在这方面不是我的朋友。
我最近使用限制性更强的防火墙将我的开发环境(VMWare 上的 VS.NET 2008 SP1)移到了新网络。在后续构建期间,许可证编译器 (lc.exe) 需要很长时间才能完成(几分钟)。我认为它正在超时,因为它无法通过防火墙连接,但我在事件日志中看不到超时或构建错误的证据。
您是否知道 lc.exe 是否确实尝试与供应商的许可证服务器进行通信,如果是,它是否使用非 http 端口来这样做?谷歌在这方面不是我的朋友。
lc.exe
如果您使用的是具有自定义许可证提供程序的组件,则可能会与外部连接。
这篇文章(非常古老,但仍然合适)描述了如何做到这一点。
考虑构建一个非常小的临时项目,它不需要常规 .NET 控件之外的任何东西,并查看构建是否令人满意。如果是这样,那么像 WireShark 这样的东西可能会告诉你发生了什么,或者与控件的供应商联系。
如果您正在处理经过数字签名的程序集,则可能会发生这种情况。在安装 .net 3.5 SP1 后尝试以下操作:
1) 在 Internet Explorer 中,工具 | 选项 | 高级 | 安全 | 取消选中“检查发布者的证书吊销”。
2) 编辑c:\windows\microsoft.net\framework\v2.0.50727\config\machine.config,添加以下key:
<configuration>
<runtime>
<generatePublisherEvidence enabled="false"/>
我有一个非常相似的问题(很长的 JIT 时间),第二个问题完全解决了我们的问题。正如 Jeremy 还指出的那样,当我们使用 wireshark 查看服务器在 DNS 请求上超时以解析用于证书的外部服务器的名称时,我们确定这是我们的问题。