【问题标题】:C# application says "No" when executedC# 应用程序在执行时说“否”
【发布时间】:2012-07-18 15:46:58
【问题描述】:

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

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

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

E:/TextMatcher>TextMatcher.exe
No

E:/TextMatcher>

computer literally says "No" 并没有提供更多信息。在程序的任何地方,我都没有包含在任何失败或其他情况下输出“否”这个词。

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

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

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

【问题讨论】:

  • 请附上你的一些代码,我很想看到这个。
  • »No« 不是来自系统或框架中任何内容的标准消息(除非您有嵌入式 Prolog,但它会是 »No.«)。所以你也许应该看看程序的代码在什么情况下打印»No«。
  • 在输出或错误上一定写了 No 这个词。找出您可以将它们重定向到您自己的 TextWriter 类的位置,并在它尝试写出 No. 时写出堆栈跟踪。
  • 代码没什么特别的!我不能包含太多,因为它在受限网络上。但即使我将writeline 作为第一个可执行行,它仍然无法到达它
  • @a12jun - 你在远程机器上运行它,是吗? (it runs fine locally) 可能“否”是一些安全限制到位的结果。比如无法从命令行运行随机程序,正如 Servy 所暗示的那样。

标签: c# .net dll console-application executable


【解决方案1】:

可能有人将服务器上的图像文件执行选项注册表设置修改为launch a debugger automatically

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

【讨论】:

  • (注意:启动的程序不一定是调试器)
【解决方案2】:

检查是否安装了必要的Framework组件, 即适合的点网框架。使用 4.0 并安装 3.5 的应用程序 会导致非常奇怪的行为。

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

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

检查控制台应用程序中的平台设置。它们是否匹配 你想在哪台机器上运行你的应用程序? (win64和win32不匹配)

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

【讨论】:

  • 谢谢,是的,它也可能只是复制过程中损坏的 exe 文件
  • 当然可以。最重要的是现在一切正常。
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-12
    • 2018-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多