The .NET client type generates executable proxies in the form of .NET assembly (.dll) files.
Client Details for the .NET client type displays the following generation settings:
Namespaces — Namespace settings to use both for the root in the generated .NET proxy and for DataSet and DataTable classes generated in the proxy.
General — Enter the namespace to use as the root for generating the classes in a .NET proxy.
DataSet — By default, ProxyGen creates the namepace of the strongly typed DataSet or DataTable class by appending "StrongTypedNS" to the project's General namespace. To specify a different namespace for the DataSet or DataTable class, uncheck the Use Default option.
Compiler — These radio buttons allow you to specify one of the following compilers to use for generating a .NET proxy:
Default csc — ProxyGen uses the latest Microsoft csc C# compiler on the system.
Custom — You specify an alternate C# compiler for proxy generation.
Advanced — Click this button to access the Advanced .NET Options dialog box which allows you to set compiler and XSD settings for the .NET client proxy. For a detailed description, see Advanced .NET Optionsdialog box.
Add Namespace to Output Directory — Select this option if you want ProxyGen to create the project's DLL file in a subdirectory of the output directory. This option allows you to turn off the default behavior of creating the project's DLL file in subdirectories using the namespace, and allows you to put it directly in the output directory.
For example, if the output directory is C:/wrk and the Namespace is ABC.ClientNS, then ProxyGen creates the DLL file in C:/wrk/ABC/ClientNS. Uncheck this option if you want ProxyGen to create the project's DLL file directly into the output directory (for example, C:/wrk).
Assembly Info — General information about a .NET assembly is controlled through this set of attributes: Title, Version, Desc (Description), Company, Runtime, Product, Delay Sign, and Key File. You can change the attribute values to modify the information associated with an assembly. This information is critical to uniquely identify the proxy.
Version has the following syntax:
Table 6. Syntax
major.minor.build.revision
You can specify all Version values or accept the defaults for build number and revision by using the * (asterisk) wildcard. For example:
1.2.3.4 (specify all values)
1.2.*.4 (accept default value for build)
1.2.3.* (accept default value for revision)
1.2.* (accept default values for build and revision)
The Runtime combo-box specifies which type of Open Client runtime assemblies (DLLs) you want to use for your Open Client project:
Digitally Signed — Indicates that the DLLs are digitally signed to identify the author, but are not strongly named for precise DLL version matching. This is the default setting.
Strongnamed Signed — Indicates that the DLLs are both digitally signed to identify the author and strongly named for precise DLL version matching.
Strongnamed — Indicates that the DLLs are not digitally signed to identify the author and will be strongly named for precise DLL version matching. This configuration is not generally recommended but may be necessary in some special cases.
For more information on these .NET runtime assembly options, see the information on .NET client interface generation in OpenClient interface generation.
If Delay Sign is checked with one of the Strongnamed options, ProxyGen uses delayed signing along with the public key file to strongname the proxy assembly. This means the strongname signing process must be completed outside of ProxyGen on a system where the key pair file is located (normally a secure system). For more information, see the documentation on Microsoft's Strong Name tool (sn.exe). By default, this is unchecked.
Key File is the public key file used for delayed strongname signing. This field is enabled only if Delay Sign is checked.
Unknown Support — These radio buttons allow you to specify how you want the .NET proxy to support the .NET null value for parameters and return values that can have the ABL Unknown value (?):
Nullable Types — Use .NET nullable value types. These are built-in .NET structures that support the null value in addition to the values of a corresponding .NET primitive value type (such as System.Int32 or System.Decimal). Each parameter or return type with an ABL primitive data type (such as INTEGER or DECIMAL) that can have the Unknown value (?) is therefore mapped to a corresponding nullable value type.
Holder Classes — Use OpenEdge holder classes. These are OpenEdge-defined .NET classes that correspond to .NET primitive value types. Each holder class is defined with properties that allow the .NET null value to be set and tested in addition to allowing the values of the corresponding .NET value type to be set and returned. Each parameter or return type with an ABL primitive data type that can have the Unknown value (?) is therefore mapped to a corresponding holder class.
Note: For ProxyGen projects created in OpenEdge releases without support for nullable types (releases prior to OpenEdge 11.0), the project defaults this setting to Holder Classes. For ProxyGen projects created in OpenEdge releases that support nullable types, the project defaults this setting to Nullable Types. For more information on using nullable value types and holder classes in .NET proxies, see OpenEdge Development: .NET Open Clients.