5

我在本地开发机器上开发了一个小型 C# 控制台应用程序 (TextMatcher.exe),现在需要将其部署到实时环境。它引用了我开发的另一个类库,它具有通用功能,我打算在未来的控制台应用程序中使用和改进。

最终,这个特定的应用程序将从 SSIS 包中执行,但现在我只是尝试从cmd.

我不骗你这是程序的实际输出:

E:/TextMatcher>TextMatcher.exe
No

E:/TextMatcher>

计算机从字面上说“不”并且没有提供进一步的信息。我没有在程序的任何地方包括在任何失败或其他情况下输出“否”这个词。

当然,它在本地运行良好。我确保我也包含了实用程序类库的 dll。我已阅读有关如何正确部署控制台应用程序的其他问题(此处此处),并已遵循建议。

注意:这对谷歌来说也很困难,因为使用“不”这个词是问题的根本......

编辑-现在似乎可以工作了...我只是将文件从本地计算机再次复制到远程计算机...我试图让它再次中断,以便我可以弄清楚到底发生了什么,并且在我这样做之前,我不会接受答案,以便人们可能会对此有所了解。无论哪种方式都非常令人费解。

4

3 回答 3

3

有人修改了服务器上的 Image File Execution Options 注册表设置以自动启动调试器

简而言之,检查注册表项HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\currentversion\image file execution options并查看是否有与您的可执行文件名称匹配的条目。

于 2012-07-18T16:00:01.773 回答
1

检查您是否安装了必要的Framework组件,即适合的Dot net framework。使用 4.0 并安装 3.5 的应用程序可能会导致非常奇怪的行为。

尝试编写一个非常简单的窗口应用程序并在部署机器上启动它(这可能会给你更多的帮助)。

检查控制台应用程序是否可以访问所需的 Dll(您开发的,例如您的类库)。并检查您的 Dll 的正确版本是否匹配!

检查控制台应用程序中的平台设置。它们与您要运行应用程序的机器匹配吗?(win64 和 win32 不匹配)

如果所有这些都没有帮助,请尝试检查部署机器上的可执行文件,例如使用depends.net、checkasm 或类似工具。

于 2012-07-18T16:00:57.197 回答
0

您的生产环境是否运行AppLocker?我不知道它的输出是否可以自定义为在命令行上输出“No”。我想到了 Applocker,因为您可以使用它来限制系统仅运行签名的可执行文件。如果您的 Textmatcher 可执行文件未签名,它可能会立即关闭。如果您有能力,我很想知道签署您的二进制文件是否会改变行为。

于 2012-07-18T16:55:34.477 回答