【问题标题】:Why would Visual Studio/CLR produce a "bad" executable?为什么 Visual Studio/CLR 会产生“坏”的可执行文件?
【发布时间】:2008-11-25 16:37:12
【问题描述】:

这是我最近开始遇到的一个奇怪问题。我的团队正在开发一个 COTS 应用程序,我们有几个人在编写代码。几周前,我在尝试调试(并运行已编译的 EXE)时收到一条错误消息:

"Windows 无法访问指定的 设备、路径或文件。你不可以 拥有适当的权限 访问该项目。”

最终我不得不重构这段 sn-p 代码:

mcolSchedulesNeedingOverride(New Guid(lstrErrorParts(0))) &= vbNewLine & lstrErrorParts(2)

到这里:

Dim lguidKey As New Guid(lstrErrorParts(0))
Dim lstrErrorMsg As String = mcolSchedulesNeedingOverride(lguidKey)
lstrErrorMsg &= vbNewLine & lstrErrorParts(2)
mcolSchedulesNeedingOverride(lguidKey) = lstrErrorMsg

然后允许 VS 生成一个实际工作的 EXE。我真的不明白为什么,但它奏效了。我确实使用了 peverify 实用程序来确定哪个程序集有问题。

昨天更新了大约 25 个文件后,现在我在不同的代码分支中遇到了同样的问题。这不会很有趣 - 所以我希望有人能提供一些关于为什么会发生这种情况的见解 - 这可能会帮助我缩小查找范围。

peverify 显示所有 我们的 程序集都是正确的,但会吐出 System.Windows.Forms.dll 的 90 多个错误!

有人有什么建议吗?

【问题讨论】:

    标签: .net vb.net visual-studio clr


    【解决方案1】:

    你说你有几个开发人员在做这个项目,所以我想知道他们是否也遇到了这个问题。

    如果它只发生在你的机器上,那么我不会去寻找代码中的问题(你所做的重构似乎与错误完全无关,所以我猜它后来工作的原因是另一个)但是去在您的环境中寻找问题。

    您的 .NET Framework 安装可能有问题或配置不正确。你能看到哪个文件抛出错误消息吗?为您机器上的任何程序集定义了任何策略?

    【讨论】:

    • 好吧,原来的问题是 - 其他开发人员可以执行该程序,但在调用该代码时会收到 InvalidProgramException。我根本无法执行该应用程序。更改代码修复了所有问题。
    • 好吧,我“回滚”到我知道有效的 SVN 修订版。它没有用。我最终重新启动,这一次解决了它。我想 Comodo Firewall/ID 可能与此有关。无论如何,即使您的回答主要是常识,它也帮助我解决了问题,所以我标记了它=)
    • 好吧,那就搞砸杀毒软件 sh*t 之类的……我们只需要 UAC。
    【解决方案2】:

    当我从网络/某个不受信任的位置拉出二进制文件时,我最常遇到该错误消息。 Windows 将“有帮助”并阻止对它的访问。

    右键单击文件并选择属性,然后“取消阻止”

    奇怪的是,错误在其他地方的表现方式不同,所以这可能完全不相关;但是在您的机器上构建会使 Windows 对文件的处理方式与下载的副本不同……但不确定这与重新启动有何关系。

    编辑:请参阅this kb 文章以更全面地描述我所指的“功能”

    【讨论】:

      猜你喜欢
      • 2010-10-31
      • 2015-02-21
      • 2011-11-19
      • 2019-08-03
      • 2013-03-25
      • 1970-01-01
      • 2018-07-26
      • 1970-01-01
      • 2023-04-04
      相关资源
      最近更新 更多