将项目从 .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 的相关文章

  • 复制到其他计算机时无法在 WcfTestClient 中添加服务

    我想在另一台计算机上运行 WcfTestClient VS2012 中包含的一个 而不安装 VS2012 这可能吗 在我已经安装了 NET 4 5 的机器上 但是当我尝试添加 Web 服务时 它给了我以下堆栈跟踪 Exception Tex
  • 最佳实践:从属性中抛出异常

    什么时候适合从属性 getter 或 setter 中抛出异常 什么时候不合适呢 为什么 关于这个主题的外部文档的链接会很有帮助 谷歌搜索结果出奇的少 Microsoft 在以下位置提供了有关如何设计属性的建议 http msdn micr
  • NET/COM 互操作的 ref string[] 内存泄漏

    我最近发现一个非常奇怪的 对我来说 内存泄漏IEnumString http msdn microsoft com en us library ms693735 28VS 85 29 aspxC 使用的 COM 对象 具体来说 使用已包含先
  • 在 MVVM 中哪里可以捕获异常?

    我的视图模型类有一个连接到服务的方法 不确定这是否是一个好的实践 或者视图模型是否应该是严格的属性和属性更改机制 当然 我想在连接或断开连接时处理任何可能的 WCF 异常 让我们使用未找到端点作为示例 考虑到这是一个我想引起用户注意的异常
  • 为什么从 ASP.NET 页面调用的 DLL 中出现异常后,我的 IIS7 应用程序池会关闭?

    我已阅读帖子ASP NET应用程序池关闭问题 https stackoverflow com questions 4742122 asp net application pool shutdown problem and IIS 7 5 应
  • 如何在 C# 中捕获等待的异步方法的异常?

    我基本上想知道在 C 中我应该如何捕获通过等待的异步方法的异常await关键词 例如 考虑以下小控制台程序 其中最重要的是包含一个名为AwaitSync AwaitSync calls TestAsync 它返回一个任务 执行时会抛出异常
  • 仅针对某些异常类型中断

    我知道异常处理是一件非常重要的事情 我们在所有项目中都在这样做 主要原因是记录客户发生的错误 这工作正常 根本不是问题 但是 当我仍在使用 Visual Studio 编码和运行应用程序时 我根本不需要任何异常处理 我希望调试器正好停在应用
  • 为什么 main() 中的 try-catch 不好?

    有人可以向我解释为什么在 main 方法中使用 try catch 来捕获未处理的异常被认为是不合适的吗 STAThread static void Main try Application Run new Form1 catch Exce
  • API网关+Lambda+Python:处理异常

    我正在非代理模式下从 API Gateway 调用基于 Python 的 AWS Lambda 方法 我应该如何正确处理异常 以便使用部分异常设置适当的 HTTP 状态代码以及 JSON 正文 作为示例 我有以下处理程序 def my ha
  • git在Windows和Linux之间切换后强制刷新索引

    我有一个Windows和Linux共享的磁盘分区 格式 NTFS 它包含一个 git 存储库 约 6 7 GB 如果我只使用Windows or 只使用Linux操作 git 存储库一切正常 但是每次切换系统的时候git status命令将
  • 如何确定异常是否属于特定类型

    我有一段 try catch 代码 try catch Exception ex ModelState AddModelError duplicateInvoiceNumberOrganisation The combination of
  • 从 C# 访问 OCX 库时出现“灾难性故障”

    我目前正在尝试使用我的 C 应用程序中的第三方 DLL 我已经注册了 DLL 并将其添加为 COM 组件列表中的引用 据我了解 这应该创建必要的互操作类来从 C 访问此 DLL 在尝试从 DLL 中调用任何方法时 我收到以下异常 Syste
  • Python 2 的 `exceptions` 模块在 Python3 中丢失了,它的内容到哪里去了?

    一位朋友提到 对于 Python 2 假设您在命令行上的路径环境变量中有它 pydoc exceptions 非常有用 知道它应该可以为他每周节省几分钟的网络查找时间 我自己每周都会用谷歌搜索一次例外层次结构 所以这对我来说也是一个有用的提
  • 无法以编程方式反序列化 SOAP 消息

    当我尝试反序列化肥皂消息时 出现以下异常 我这样做是因为我有想要在测试中重用的响应文件 我无法使用真正的服务等 因为它不适合我们拥有的测试框架的架构 Test MyUnitTestMethod failed System InvalidOp
  • 通过等待任务或访问其 Exception 属性都没有观察到任务的异常

    这些是我的任务 我应该如何修改它们以防止出现此错误 我检查了其他类似的线程 但我正在使用等待并继续 那么这个错误是怎么发生的呢 通过等待任务或访问其 Exception 属性都没有观察到任务的异常 结果 未观察到的异常被终结器线程重新抛出
  • 尝试用 C# 创建数学输入面板

    如何在 C 中创建数学输入面板 我尝试将其放入 dll 中并调用它 但它立即关闭 include
  • 捕获特定的 WebException (550)

    假设我创建并执行一个System Net FtpWebRequest 我可以用catch WebException ex 捕获此请求引发的任何与 Web 相关的异常 但是 如果我有一些逻辑只想在由于以下原因引发异常时执行 550 file
  • SQLiteException - 仅发生在某些设备上

    我最近向市场发布了一个应用程序 从开发者控制台来看 我的用户中大约有 1 2 遇到了这个问题 1 2 的比例很小 但人们更倾向于在某些内容不起作用时留下评论 而不是在它起作用时留下评论 这可能会对下载产生负面影响 不幸的是 开发人员控制台仅
  • 如何手动发送django异常日志?

    我的应用程序中有一个应该返回的特定视图HttpResponse 如果一切都成功完成并且类似HttpResponseBadRequest 否则 此视图适用于外部数据 因此可能会引发一些意外的异常 我当然需要知道发生了什么 所以我有这样的东西
  • 将 SQL Server 2008 DB 迁移到 Postgres [重复]

    这个问题在这里已经有答案了 我想将 SQL Server 2008 数据库迁移到 Postgres 有没有一种无痛的方法来做到这一点 是否有任何工具可以扫描架构和存储过程以标记兼容性问题 无痛http dbconvert com conve

随机推荐

  • 在 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 导入方法调用之一在从