-
leighyu


- Joined on 09-05-2007
- Posts 16
|
AddIn.Load throws an exception
I have a colletion class with the following definition --
public class CollateralCollection : IEnumerable
{ ...
public IEnumerator GetEnumerator()
{
return (IEnumerator) collaterals.GetEnumerator();
//return (IEnumerator)null;
}
private List<Collateral> collaterals;
...
}
The proxy code for the GetEnumerator method is --
public global::System.Collections.IEnumerator GetEnumerator() {
object[] _param = new object[0];
if ((this.@__vstaCacheGetEnumerator4 == null)) {
this.@__vstaCacheGetEnumerator4 = this.remoteType.GetMethod("GetEnumerator", (((global::System.Reflection.BindingFlags.Public | global::System.Reflection.BindingFlags.InvokeMethod)
| global::System.Reflection.BindingFlags.Instance)
| global::System.Reflection.BindingFlags.Default), null, new global::System.Type[0], null);
}
global::System.Collections.IEnumerator retVal_param;
retVal_param = (( global::System.Collections.IEnumerator)(((global::System.Reflection.MethodInfo)(this.@__vstaCacheGetEnumerator4)).Invoke(this, _param))); // ********throws an exception
return retVal_param;
}
When I tried to call AddIn.Load upon program startup, it throws an exception (see attached for exception details) at the statement right before the return in proxy code. If I change the GetEnumerator code to { return (IEnumerator)null; }, it won't the exception in that code. Of course, some other exceptions are thrown because a null was returned. I am wondering what I did wrong. Thanks a lot for the help.
Exception details --
Microsoft.VisualStudio.Tools.Applications.Contract.AddInException was unhandled Message="System.Collections.Generic.KeyNotFoundException, mscorlib\r\n\r\nSystem.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.\r\n\r\nServer stack trace: \r\n at System.ThrowHelper.ThrowKeyNotFoundException()\r\n at System.Collections.Generic.Dictionary`2.get_Item(TKey key)\r\n at Microsoft.VisualStudio.Tools.Applications.TypeInfrastructureManager.GetCanonicalName(TypeDescription localType)\r\n at Microsoft.VisualStudio.Tools.Applications.TypeInfrastructureManager.GetCanonicalName(Type localType)\r\n at Microsoft.VisualStudio.Tools.Applications.SerializableObjectContractFormatter.Serialize(Object serialize, Type typeToUse, TypeInfrastructureManager typeInfrastructureManager)\r\n at Microsoft.VisualStudio.Tools.Applications.TypeServices.CreateSerializableRemoteArgument(Object objToPack, Type typeToUse, Boolean isByRef, TypeInfrastructureManager typeInfrastructureManager)\r\n at Microsoft.VisualStudio.Tools.Applications.TypeServices.RemoteArgumentFromObject(Object objToPack, Type typeToReflect, Boolean isByRef, Boolean isOut, TypeInfrastructureManager typeInfrastructureManager)\r\n at Microsoft.VisualStudio.Tools.Applications.Internal.AdapterHelpers.PostProcessArguments(IRemoteArgumentArrayContract arguments, Object[] outputArguments, ParameterInfo[] parameters, Object returnValue, Type returnType, TypeInfrastructureManager typeInfrastructureManager, ContractLockData lockData)\r\n at Microsoft.VisualStudio.Tools.Applications.RemoteMethodInfoAdapter.System.AddIn.Contract.Automation.IRemoteMethodInfoContract.Invoke(IRemoteObjectContract target, BindingFlags bindingFlags, IRemoteArgumentArrayContract arguments, Int32 lcid)\r\n at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs)\r\n at System.Runtime.Remoting.Messaging.StackBuilderSink.PrivateProcessMessage(RuntimeMethodHandle md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs)\r\n at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg, Int32 methodPtr, Boolean fExecuteInContext)\r\n\r\nException rethrown at [0]: \r\n at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)\r\n at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)\r\n at System.AddIn.Contract.Automation.IRemoteMethodInfoContract.Invoke(IRemoteObjectContract target, BindingFlags bindingFlags, IRemoteArgumentArrayContract parameters, Int32 localeId)\r\n at Microsoft.VisualStudio.Tools.Applications.ExceptionFilterHelper.Invoke(IExceptionManagerContract mgr, IExceptionNotificationObjectContract exceptionNotificationObjectContract, IRemoteMethodInfoContract miContract, IRemoteObjectContract remoteObjectContract, BindingFlags bindingAttr, IRemoteArgumentArrayContract parameters, Int32 lcid)\r\n at Microsoft.VisualStudio.Tools.Applications.RemoteMethodInfo.Invoke(Object target, BindingFlags invokeAttr, Binder binder, Object[] arguments, CultureInfo culture)\r\n at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)\r\n at ASAP2.CollateralCollection.GetEnumerator()\r\n at ASAP2CSharpAppAddIn.script.script_Startup(Object sender, EventArgs e)\r\n at ASAP2CSharpAppAddIn.script.FinishInitialization()\r\n at ASAP2.Application.Microsoft.VisualStudio.Tools.Applications.Contract.IEntryPointContract.FinishInitialization()\r\n at Microsoft.VisualStudio.Tools.Applications.EntryPointAdapter.Microsoft.VisualStudio.Tools.Applications.Contract.IEntryPointContract.FinishInitialization()" Source="Microsoft.VisualStudio.Tools.Applications.Adapter" StackTrace: Server stack trace: at Microsoft.VisualStudio.Tools.Applications.EntryPointAdapter.Microsoft.VisualStudio.Tools.Applications.Contract.IEntryPointContract.FinishInitialization() at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs) at System.Runtime.Remoting.Messaging.StackBuilderSink.PrivateProcessMessage(RuntimeMethodHandle md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs) at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg, Int32 methodPtr, Boolean fExecuteInContext) Exception rethrown at [0]: at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) at Microsoft.VisualStudio.Tools.Applications.Contract.IEntryPointContract.FinishInitialization() at Microsoft.VisualStudio.Tools.Applications.Internal.ExceptionFilter.ExceptionFilterHelper.CallFinishInitialization(IEntryPointContract hi, IExceptionFilterCallback callback) at Microsoft.VisualStudio.Tools.Applications.AddInImpl.ExecutePhase(String methodName, IEntryPointContract targetEntryPoint) at Microsoft.VisualStudio.Tools.Applications.AddInImpl.AttemptInternalLoad(IAppDomainBindingContract appDomainBinding, String appBase, String configFile, PermissionSet topOfStackPermission, StrongName[] strongNameAssemblies) at Microsoft.VisualStudio.Tools.Applications.AddInImpl.InternalLoad(IAppDomainBindingContract appDomainBinding, String appBase, String configFile, PermissionSet topOfStackPermission, StrongName[] strongNameAssemblies) at Microsoft.VisualStudio.Tools.Applications.AddInImpl.Load(String appBasePath) at Microsoft.VisualStudio.Tools.Applications.AddIn.Load(String appBasePath) at ASAP2.Extension.LoadAddIns() in C:\VSTA\ASAP2\ASAP2\Extension.cs:line 47 at ASAP2.Extension.Connect(Application application) in C:\VSTA\ASAP2\ASAP2\Extension.cs:line 22 at ASAP2.Program.Main() in C:\VSTA\ASAP2\ASAP2\Program.cs:line 23 at System.AppDomain.nExecuteAssembly(Assembly assembly, String[] args) at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() at System.Threading.ThreadHelper.ThreadStart_Context(Object state) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ThreadHelper.ThreadStart()
|
|