首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >两台机器上的相同源代码会产生不同的可执行行为

两台机器上的相同源代码会产生不同的可执行行为
EN

Stack Overflow用户
提问于 2008-09-17 19:55:26
回答 9查看 812关注 0票数 1

以下是场景:

存储在SVN中的C#窗口应用程序项目用于创建可执行文件。通常,构建服务器处理构建过程,并定期创建供测试使用的构建。在这个特定的实例中,我被要求修改一个特定的构建并创建可执行文件。

我不能完全确定构建服务器是否会修改项目文件,但我知道它会在SVN中为用于编译可执行文件的源代码创建一个标记。使用这个标记,我已经在另一台机器上签出了代码,这是一台开发机器。然后,我在开发机器上编译了源代码。

执行时,在开发计算机上编译的应用程序与生成服务器编译的应用程序的功能不完全相同。例如,在测试机器上,应用程序检测到DateTime解析执行。但是,构建机器的可执行文件不会抛出任何异常。如果我在开发机器上运行可执行文件,则不会抛出任何异常。

因此,总而言之,两台机器理论上使用相同的源代码和项目。

开发机器的可执行文件只能在开发机器上运行。构建机器的可执行文件可以在每台机器上运行,包括dev机器。

机器的区域设置或时区是否存储在编译后的可执行文件中?你知道是什么导致了这种行为吗?或者如何检查可执行文件来发现可能的差异并纠正它们?

不幸的是,我不能在测试机器上附加调试器。我会尽快告诉你的。

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2008-09-17 19:59:35

这个应用程序使用它运行的机器的区域设置,看起来这是你的问题。通过将System.Threading.Thread.CurrentThread.CurrentCulture和System.Threading.Thread.CurrentThread.CurrentUICulture设置为特定值,可以强制线程使用特定区域性。

票数 4
EN

Stack Overflow用户

发布于 2008-09-17 19:59:30

这两台机器可能具有不同版本的底层dll,而该dll不是构建过程的一部分。在我们的内部服务器场中分发服务时,我就看到过这种情况。

票数 2
EN

Stack Overflow用户

发布于 2008-09-17 19:58:39

您可以在构建机器上的调试器下运行该程序吗?

如果是这样,那么调试问题-没有必要猜测

让dev机器上的调试器捕获异常,在构建机器上的相同位置设置一个断点。看看这两者之间有什么不同。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/86959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档