将项目从 .NET Framework 3.5 迁移到 4.0 后,在调试期间在 DllImport 例程上获取 InteropServices.SEHException

2024-02-23

我编写了一个与winspool 打印驱动程序交互的应用程序,几个月来它一直工作得很好。我需要将我的项目从 .NET Framework 3.5 移动到 4.0 以包含同事程序集,但这样做(并且仅这样做)会导致我的 .dll 导入方法调用之一在从 VS 2010 IDE 执行时失败。如果我在 Visual Studio 2010 环境之外运行调试和发布二进制文件,它们仍然可以工作。下面是迁移到 .NET 4.0 后失败的行:

// This call works just fine immediately before switching projects to .NET 4.0
// and begins failing immediately after.
WinSpool.ClosePrinter(m_PrinterHandle);

以下是我对此导入方法的定义:

public static class WinSpool
{

   /// <summary>
   /// http://msdn.microsoft.com/en-us/library/dd183446%28v=vs.85%29.aspx
   /// </summary>
   [DllImport(
      "winspool.Drv",
      EntryPoint = "ClosePrinter",
      SetLastError = true,
      ExactSpelling = true,
      CallingConvention = CallingConvention.StdCall)]
   public static extern bool ClosePrinter(IntPtr hPrinter);

}

以下是我收到的异常的确切文本:

System.Runtime.InteropServices.SEHException(0x80004005):外部组件引发了异常

请记住,我可以恢复项目 .NET 3.5,并且在从 Visual Studio 2010 IDE 执行时工作正常。但是,使用 .NET 4.0 作为目标框架,从 IDE 运行时会出现异常,但直接从 Windows 资源管理器执行二进制文件时,它们工作正常。这里到底发生了什么。


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将项目从 .NET Framework 3.5 迁移到 4.0 后,在调试期间在 DllImport 例程上获取 InteropServices.SEHException 的相关文章

随机推荐

  • 在 Windows/mingw 上,`fcntl(fd, F_GETFL) | 等价于什么? O_ACCMODE`?

    我正在 Windows 上用 Mingw 编译一个程序 如何获取打开的文件描述符的访问模式 根据Win32 hlp API提供了该功能BOOL GetFileInformationByHandle HANDLE hFile LPBY HAN
  • 无法编译 parquet-tools

    我克隆了存储库parquet mr from 这个链接 http git 20clone 20https github com Parquet parquet mr git 我想要建造的parquet tools正如所解释的here htt
  • Python file.write 创建额外的回车符

    我正在使用 python 将一系列 SQL 语句写入文件 模板字符串如下所示 store insert tinsert stores storenum values s 我像这样写入文件 for line in source line li
  • 如何衡量字符串之间的相似度?

    我有很多名字 我想获得唯一的名字 然而 由于拼写错误和数据不一致 名称可能写错 我正在寻找一种方法来检查字符串向量是否其中两个相似 例如 pres lt c Obama B Bush G W Obama B H Clinton W J 我想
  • 无法设计全授权工作

    我需要访问 google API 我试图让用户使用 Devise 2 1 1 和 Omniauth 使用 gemgoogle oauth2因为 OAuth2 是 Google 文档推荐的 不幸的是我无法让它工作 这是routes rb Te
  • Django - 按组注释加权平均值

    我有以下在 SalesRecord 上运行的模型管理器 def by variety and date self start date end date return self model objects filter date range
  • 用 Java 或其他方式发送 GET 和 POST 请求而没有响应

    是否可以使用 Java 或其他语言发出 GET 和 POST 请求 这样您就不必关心返回的内容 就像只是发送请求但不想收到任何响应 无论您是否关心回复 它都会被发送 HTTP 协议规范说它必须如此 如果您不关心响应 您的客户端可以在发送请求
  • 在Python中导入CAD对象并存储为数组

    我正在使用 Autodesk Fusion 360 对 3D 零件进行建模 参见下图 然后可以将其导出并保存为 step iges sat 或 smt 文件 我想要实现的目标是将这部分转换为Python中的3D numpy数组 数组的每个元
  • 使用环境覆盖 Spring Cloud Config 值

    有没有办法用另一个属性源 特别是系统环境 覆盖通过 Spring Cloud Config Server 设置的属性 我知道我可以通过循环来手动完成Environment对象的PropertySources 但如果我可以设置它以便boots
  • CMake - 如何获取目录名称中的倒数第二个?

    所以我有 get filename component a dir some file PATH get filename component a last dir a dir NAME 其中 a last dir 应该返回我的目录的最低级
  • 在每个函数/每个代码块的基础上启用 SSE4 的正确方法是什么?

    对于我的一个 OS X 程序 我有一些使用 SSE4 1 指令的优化案例 在仅 SSE3 的计算机上 运行非优化分支 SupportsSSE4 1 returns true on CPUs that support SSE4 1 false
  • Java FX 更改前一阶段场景中的标签文本

    我有一个Main启动我的应用程序的类有其MainControllerfxml 中指定的类 当点击Connect按钮打开另一个具有不同场景和控制器的窗口 基于我想要改变的行动Label通过 my 的文本值MainController 但它没有
  • 使用 的 Websocket CdiUtils NPE

    该应用程序在 TC7 Spring 3 和 JSF 2 2 中运行良好 但我想添加 JSF 2 3 的推送功能 因此我升级到 TC 9 0 8 Spring 5 0 5 和 JSF 2 3 0 在遇到一些简单的初始问题后由于升级 应用程序部
  • Maven 构建在 Jenkins 中中止

    我是詹金斯的新手 我成功地在 Jenkins 中克隆了 GIT hub 存储库 现在尝试在 Jenkins 中构建获取的 Maven 项目 我有 7 个从 GITHUB 获取的项目 它们相互依赖 即某些项目在其 POM 中为其他项目定义了依
  • 如何用标准 Java 实现 Android 消息处理程序模式?

    我正在编写一个通过蓝牙与 PC 通信的 Android 应用程序 在正常操作期间 它会从手机向 PC 快速连续发送短 8 字节数据包 通常频率 gt 100Hz 在每个设备上 运行一个单独的线程来执行写入和读取 代码如下所示 The Cla
  • 如何在Android中获取设备信息[重复]

    这个问题在这里已经有答案了 可能的重复 如何检测操作系统或设备类型等系统信息 https stackoverflow com questions 3213205 how to detect system information like o
  • @Profile 导致无法启动 EmbeddedWebApplicationContext

    我尝试使用 Profile 功能来分离生产 开发环境配置和 测试 配置 但是当我将 Profile 添加到我的配置类中时 我得到 Exception in thread main org springframework context Ap
  • 样式使 NavLink 在 React 中“不可点击”

    我正在尝试设计一个react router dom NavLink 导航栏 我已经采用了几种不同的方法 但在每种情况下 无论我选择什么方式 都会使 NavLink 不可点击 它将是一个样式精美的框 不会通过单击进行导航 我采取了以下几种方法
  • 从本地时区转换为 utc 时区

    我正在尝试创建一个函数 它接受一个时间对象并将其转换为 UTC 时间 下面的代码似乎关闭了一小时 当我中午通过转换器运行时 我返回 18 00 00 但是当我通过在线转换器运行相同的数据时 我得到 17 00 00 我在这里做错了什么 任何
  • 将项目从 .NET Framework 3.5 迁移到 4.0 后,在调试期间在 DllImport 例程上获取 InteropServices.SEHException

    我编写了一个与winspool 打印驱动程序交互的应用程序 几个月来它一直工作得很好 我需要将我的项目从 NET Framework 3 5 移动到 4 0 以包含同事程序集 但这样做 并且仅这样做 会导致我的 dll 导入方法调用之一在从