Based on the SDK and our testing of the CTP release version of ProxyGen v 2, here are our finding. For additional informatoin on ProxyGen v 2 CTP release please see our ProxyGen v 2 CTP Release Supplement. If there are other version 1 issues you would like addressed, please let me know (submit questions on the forum). If you are interested in getting access to the CTP, see the following post.
1 Classes marked as isExcluded=”true” are parsed. If the parser fails inside one of these classes it will not create the proxy layer code. This issue has not been fixed.
2 ProxyGen outputs “+” instead of “.” for nested or derived classes. This issue is fixed.
3 ProxyGen v 1 aborted if an optional parameter’s default value was null. This issue is fixed, for more information see the section in this paper on “Optional Parameters” in “ProxyGen v 2 and Visual Basic”.
4 GetEnumerator functions called from an add-in (such as using foreach in a ShapeAppBasicCSharp add-in) caused an UnsafeSerializationException because the enumerator being returned was type System.Collections.Generic.List<T>.Enumerator and not Systems.Collections.IEnumerable. This issue fixed and enumeration calls such as foreach work in add-ins.
5 ProxyGen terminates prematurely with an “unrecoverable error” without outputting useful error information. This happens less frequently.
6 VB.Net allows interfaces to declare types. When ProxyGen v1 encountered this a descriptor file containing the interface and a non-compilable proxy could be created. In ProxyGen v 2 interfaces that declare types are not included in the descriptor file; hence, no proxy can be created for them. This issue has been fixed by disallowing interfaces that declare types. For more information see the section in this paper on “Interfaces that declare types” in “ProxyGen v 2 and Visual Basic”.
7 If no entry point was specified in the descriptor file a compilable proxy could be made; however, the following error would be given when using the proxy in ProjectGen: “Invalid Assembly. This assembly is not a valid Visual Studio Tools for Applications proxy. Please ensure that it was generated by the Proxy Generation tool.” The error message for this scenario now gives better information stating that no entry point was specified and gives instructions on how to specify an entry point. This issue has been resolved by providing better error information.
8 Nested classes were problematic in ProxyGen v 1. This issue has been resolved by not allowing them. Any delegates, enumerations, interfaces, and classes that appear within a class are skipped and do not appear in the descriptor, proxy or type map files. In most cases no error or warning appears, this lack of warning has been reported to Microsoft as a bug.
9 ProxyGen does not support generics. In version 1 ProxyGen would output a syntax error into the descriptor file when it encountered a generic and this would carry over into the proxy file making it noncompilable. In version 2 the syntax error still appears for some generics in the descriptor file; however, no proxy or type maps may be generated until the syntax error is removed from the descriptor file. Other generics are caught by ProxyGen and do not appear in the descriptor file. Some generics produced errors and warnings, others do not. The inconsistency of errors has been reported to Microsoft as a bug. For more information see the section in this paper on “ProxyGen and Generics”.
10 The proxy file generated by ProxyGen v 1 contained errors when a class in the host application derived from MarshalByRefObject. This issue has been resolved, host classes may now inherit MarshalByRefObject without any problems in the proxy.
11 While ProxyGen versions 1 and 2 will create a compilable proxy for a host application that uses delegates with 5 or more parameters, these delegates will not work. In VSTA v 1, the host will throw an exception when trying to add the delegate to the type infrastructure manager. In VSTA v 2, the host will throw a System.NotSupportedException when an add-in attempts to hook up to the delegate. This issue is not fixed and there is still a limit of 4 parameters for delegates, which causes run time crashes when exceeded. This crash has been reported to Microsoft as a bug.
12 ProxyGen versions 1 and 2 translates vararg attributes to a generic ‘object’ array. This is by design.
13 ProxyGen v1 did not support static properties and methods. ProxyGen v 2 supports static properties and methods. For more information see the section in this paper on “Static Properties and Methods” under “ProxyGen v 2 Changes".
14 In ProxyGen v 1 a vague KeyNotFoundException could be thrown with no information about the key that caused the problem and the available keys. Now any type passing between the host and add-in can be easily identified and all available types can be shown.
Posted
Dec 06 2007, 11:22 AM
by
Melody