使用c#、VS2005和.NET 2.0。(XP 32位)这是一个Winforms应用程序,由VBA插件(.xla)通过互操作库调用。这个应用程序已经存在了一段时间了,当程序集在我的开发机器之外的任何地方编译和执行时,它都运行得很好。在开发时,它会严重崩溃(在调试器中,正在运行对象),并显示"Unhandled at 0x... in EXCEL.EXE: 0x...violation reading location 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);
{...}
}这看起来像是某种环境因素。注册表错误?可能是代码错误,但它在其他地方工作得很好。
发布于 2008-09-19 17:26:31
我以前在使用Office 2003时遇到过这种情况下的问题。以下是一些有用的东西:
在关闭Excel.
对象不可靠,因此我希望您不会这样做。
如果您有可能,您也可以尝试使用Microsoft PSS打开案例。如果你能重现这个问题,它们就相当不错了。在大多数情况下,这种事情是一个错误,所以你不会为此收费:)
发布于 2008-09-19 16:38:36
你的开发机器是Win64吗?如果您将构建平台设置为x86,我就会遇到一些应用程序的win64构建的问题。
发布于 2008-09-22 13:41:08
您的开发计算机运行的Office版本是否与其他计算机不同?我知道PIA是不同的。因此,例如,如果您在Office2003上进行开发并在Office2007上进行测试(反之亦然),您就会遇到问题。
https://stackoverflow.com/questions/103516
复制相似问题