我在本地开发机器上开发了一个小型的C#控制台应用程序(TextMatcher.exe),现在需要将它部署到实时环境中。它引用了我开发的另一个类库,它具有泛型函数,我打算在将来的控制台应用程序中使用和改进。
最终这个特定的应用程序将在SSIS包中执行,但是现在我只是试图从cmd
运行它。
我告诉你不这是程序的实际输出:
E:/TextMatcher>TextMatcher.exe
No
E:/TextMatcher>
computer literally says "No"并没有提供进一步的信息。在程序的任何地方,我都没有在任何失败或其他方面输出“否”字样。
当然,它在本地运行良好。我确保我也包含了实用程序类库的dll。我已经阅读了有关如何正确部署控制台应用程序并遵循建议的其他问题(here,here)。
注意:由于使用“否”这个词对问题至关重要,这对Google来说也很难实现......
编辑 - 它现在似乎正在运行...... 我只是将文件从本地计算机再次复制到远程计算机上...我试图让它再次破坏以便我可以弄清楚地球上发生了什么,直到我这样做,我不会接受一个答案,这样人们就可以在它上面发出更多的光。无论哪种方式,这都是令人费解的。
答案 0 :(得分:3)
有人可能已将服务器上的“图像文件执行选项”注册表设置修改为launch a debugger automatically。
简而言之,检查注册表项HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\currentversion\image file execution options
,看看是否有与您的可执行文件名相匹配的条目。
答案 1 :(得分:1)
检查您是否安装了必要的Framework组件, 即适合的Dot网络框架。应用程序用4.0并安装3.5 会引起很奇怪的行为。
尝试编写一个非常简单的窗口应用程序并在部署机器上启动它 (这可能会给你更多的帮助,而不是缺少的东西)。
检查控制台应用程序是否可以访问所需的Dll(您开发的,例如您的类库)。并检查您的Dll的正确版本是否匹配!
检查控制台应用程序中的平台设置。他们匹配吗? 要运行应用程序的机器? (win64和win32不匹配)
如果所有这些都没有帮助,请尝试检查部署计算机上的可执行文件 例如,使用depends.net,checkasm或类似的。
答案 2 :(得分:0)
您的生产环境是否正在运行AppLocker?我不知道它的输出是否可以自定义为在命令行输出“否”。 Applocker浮现在我的脑海中,因为您可以使用它来限制系统仅运行已签名的可执行文件。如果Textmatcher可执行文件未签名,则可能会立即关闭。如果你有能力,我很想知道签署你的二进制文件会改变行为。