New Release Of Essence#: “Philemon-2” (Alpha Build 18)

The Philemon-2 release fixes bugs, most of which have to do with the binding of .Net assemblies.

Configuration profiles have been added in order to help solve some of the .Net assembly binding issues.

A configuration profile is persistently stored as a folder in the filesystem. It must be located in the folder %EssenceSharpPath%\Config. The folder name must use “.profile” as its file extension. A configuration profile folder may (optionally) contain one or more files–each with its own format–that specify configuration options that globally apply to Essence#.

Currently, the only configuration profile that can be defined or used is the default configuration profile (Default.profile,) and the only recognized/supported configuration file type is an AssemblyMap. Support for additional named configuration profiles will be added later; and it is highly probable that other types of configuration files will also be defined.

An AssemblyMap configuration file must be named “AssemblyMap.es.” If present, it must contain an Essence# dictionary literal (which may be empty.) If any, the keys in the dictionary must be logical assembly names, and the values must be physical assembly names that can be used to actually load a .Net assembly.

Here’s an example:

#{
#System 		-> 'System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.

#System.Core 		-> 'System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.

#System.ServiceModel 	-> 'System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.

#Windows.Base		-> 'WindowsBase, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
}

The benefits of this new feature are the following:

  • Application and class library developers can use short, concise names for .Net assemblies.
  • Application and class library developers can use logical assembly names to avoid committing themselves to a particular version of an assembly.
  • Developers and users can modify the AssemblyMap configuration file in order to globally change which versions of one or more .Net assemblies will be used at run time.

If it’s been defined in your configuration profile, then you may optionally use a logical assembly name in place of a physical assembly name as the argument to the message #assemblyName:, when sending that message to any Essence# namespace, trait or class.

The “Philemon-2” release can be downloaded from the Essence# site on CodePlex (which gets you the installer.) Alternatively, the code for the run time system (written in C#) can be obtained from theEssence# CodePlex site using Git, and the code for the Essence# Standard Library can be obtained from GitHub. And the example scripts can also be downloaded from the Scripts repository on GitHub, as can the new configuration profile folder.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s