Do you mean writing some other framework based on .NET and adding some functionality which could be used by the applications the same was as .NET itself?
You certainly can do it. All you need to get started, in addition to good architectural and programming skills (of course), is good understanding of the Global Assembly Cache (GAC):
http://en.wikipedia.org/wiki/Global_Assembly_Cache[
^].
Please see also:
http://msdn.microsoft.com/en-us/library/yf1d93sz.aspx[
^],
http://msdn.microsoft.com/en-us/library/ex0ss12c.aspx[
^].
This CodeProject article can also be helpful:
Demystifying the .NET Global Assembly Cache[
^].
One of the major prerequisite to this is understanding of the
strong-named assemblies:
http://msdn.microsoft.com/en-us/library/wd40t7ad.aspx[
^].
The notion of strong-named thing is based on the notion of
strong key and and
public-key cryptography. Roughly speaking, it can nearly ensure a world-unique identification of your assembly, and
cryptographically strong validation of the authenticity of an assembly. Please drill in:
http://en.wikipedia.org/wiki/Strong_name[
^],
http://en.wikipedia.org/wiki/Public-key_cryptography[
^].
[EDIT]
Again, there is a CodeProject article which could be helpful here:
Strong Names Explained[
^].
[END EDIT]
In a nutshell, you develop some .NET-based framework, generating some keys and giving strong names to all of the assemblies. Seriously develop compatibility and versioning technique for your framework (if you ever want to upgrade it). Then, develop some installation or deployment procedure (MSI, EXE,.. anything) to install this framework onto GAC. When you do it, all your framework will became universally accessible to the applications using it — the problem is solved.
—SA