使用 c#、VS2005 和 .NET 2.0。(XP 32 位)这是一个 Winforms 应用程序,由 VBA 插件 (.xla) 通过互操作库调用。这个应用程序已经存在了一段时间,并且在我的开发机器以外的任何地方编译和执行程序集时工作正常。在开发时,它会严重崩溃(在调试器中并只是运行对象),并出现“EXCEL.EXE 中 0x 处的未处理异常...:0x...违反读取位置 0x...
但这是奇怪的部分:
我界面中的第一个方法工作正常。所有其他方法都如上所述崩溃。这是代码的近似值:
[Guid("123Fooetc...")]
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface IBar
{
[DispId(1)]
void ThisOneWorksFine(Excel.Workbook ActiveWorkBook);
[DispId(2)]
string Crash1(Excel.Workbook ActiveWorkBook);
[DispId(3)]
int Crash2(Excel.Workbook activeWorkBook, Excel.Range target, string someStr);
}
[Guid("345Fooetc..")]
[ClassInterface(ClassInterfaceType.None)]
[ProgId("MyNameSpace.MyClass")]
public class MyClass : IBar
{
public void ThisOneWorksFine(Excel.Workbook ActiveWorkBook)
{...}
string Crash1(Excel.Workbook ActiveWorkBook);
{...}
int Crash2(Excel.Workbook activeWorkBook, Excel.Range target, string someStr);
{...}
}
这似乎是某种环境的东西。注册表混乱?可能是代码错误,但在其他地方可以正常工作。