Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将项目从.NET Framework 3.5迁移到4.0后,在调试期间在DllImport例程上获取InteropServices.SEHException_Exception_Interop_Migration_Dllimport - Fatal编程技术网

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

将项目从.NET Framework 3.5迁移到4.0后,在调试期间在DllImport例程上获取InteropServices.SEHException,exception,interop,migration,dllimport,Exception,Interop,Migration,Dllimport,我已经编写了一个与winspool打印驱动程序接口的应用程序,几个月来一直运行良好。我需要将我的项目从.NET Framework 3.5移动到4.0,以包含一个同事程序集,但这样做(并且仅这样做)会导致从VS 2010 IDE执行时.dll导入的方法调用之一失败。如果我在VisualStudio2010环境之外运行调试和发布二进制文件,它们仍然可以工作。下面是在移动到.NET 4.0后现在失败的一行: // This call works just fine immediately befor

我已经编写了一个与winspool打印驱动程序接口的应用程序,几个月来一直运行良好。我需要将我的项目从.NET Framework 3.5移动到4.0,以包含一个同事程序集,但这样做(并且仅这样做)会导致从VS 2010 IDE执行时.dll导入的方法调用之一失败。如果我在VisualStudio2010环境之外运行调试和发布二进制文件,它们仍然可以工作。下面是在移动到.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);

}
公共静态类WinSpool
{
/// 
/// http://msdn.microsoft.com/en-us/library/dd183446%28v=vs.85%29.aspx
/// 
[DllImport(
“winspool.Drv”,
EntryPoint=“ClosePrinter”,
SetLastError=true,
拼写正确,
CallingConvention=CallingConvention.StdCall)]
公共静态外部布尔闭合打印机(IntPtr hPrinter);
}
下面是我得到的例外情况的确切文本:

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


请记住,我可以恢复项目.NET3.5,并且在VisualStudio2010IDE中执行时工作良好。但是使用.NET4.0作为目标框架时,我在IDE中运行时会遇到异常,但是在直接从windows资源管理器中执行二进制文件时,它们工作正常。这到底是怎么回事。

这是我本月第三次看到这个问题。唯一常见的模式是pinvoke调用和完全错误的错误代码(E_FAIL)。很难诊断,没有人发布关于运行时环境的足够详细信息。你想了解我的环境吗?我正在运行Wincows 7 64位Visual Studio 2010版本10.0.40219.1 SP1 Rel。我想我也可以找到一种方法发布我的msinfo32导出。这有帮助吗?这是我本月第三次看到这个问题。唯一常见的模式是pinvoke调用和完全错误的错误代码(E_FAIL)。很难诊断,没有人发布关于运行时环境的足够详细信息。你想了解我的环境吗?我正在运行Wincows 7 64位Visual Studio 2010版本10.0.40219.1 SP1 Rel。我想我也可以找到一种方法发布我的msinfo32导出。那会有帮助吗?