Показ дописів із міткою Mono. Показати всі дописи
Показ дописів із міткою Mono. Показати всі дописи

пʼятниця, 7 березня 2008 р.

Addin друга спроба (Mono, Plugin)

http://en.wikipedia.org/wiki/Plugin
http://www.mono-project.com/Introduction_to_Mono.Addins

Є багато причин чому ви можете вирішити дописувати розширення для ваших продуктів:
  • Дозволити стороннім розробникам розширювати чи змінювати можливості програми.
  • Підтримувати можливості ще не передбачені.
  • Зменшити розмір основної програми.
  • Розділити код через проблеми пов'язані з ліцензуванням.

.Net & MONO бачення:


Модель Mono.Addins складається з 4-х компонентів:
  • Add-in host: розширяєма за допомогою додатків програма чи бібліотека.
  • Extension point: місця де додатки реєструють типи розширень.
  • Extension node: елемент що має атрибути що описують розширення. Точки (місця) розширень можуть декларувати типи розширень з якими вони працюють.
  • Add-in: набір файлів які реєструють нові гілки в одній або декількох точках розширення визначених розширюваною програмою.
Приклад:
Реалізуємо текстовий редактор що буде розширений за допомогою додатків.


ICommand library (TextEditorLib.dll)

[assembly:AddinRoot ("TextEditor", "1.0")]

[TypeExtensionPoint]
public interface ICommand
{
void Run ();
}

An add-in (SampleAddin.dll)

[assembly:Addin]
[assembly:AddinDependency ("TextEditor", "1.0")]

[Extension]
class HelloWorldExtension: ICommand
{
public void Run ()
{
Console.WriteLine ("Hello World");
}
}

The host application (TextEditor.exe)

public class Application
{
public static void Main ()
{
AddinManager.Initialize ();
foreach (ICommand cmd in AddinManager.GetExtensionObjects (typeof(ICommand)))
cmd.Run ();
}
}

This is what the manifest for the TextEditor host would look like:

<Addin id="TextEditor" version="1.0" isroot="true">
<Runtime>
<Import assembly="TextEditor.exe"/>
<Import assembly="TextEditorLib.dll"/>
</Runtime>
<ExtensionPoint path = "/TextEditor/TypeExtensions/ICommand">
<ExtensionNode objectType="ICommand"/>
</ExtensionPoint>
</Addin>

And this could be the manifest for the add-in:


<Addin>
<Runtime>
<Import assembly="SampleAddin.dll"/>
</Runtime>
<Dependencies>
<Addin id="TextEditor" version="1.0" />
</Dependencies>
<Extension path = "/TextEditor/TypeExtensions/ICommand">
<Type type="HelloWorldExtension" />
</Extension>
</Addin>

понеділок, 25 лютого 2008 р.

Компіляція Mono для Ubuntu 7.10 amd64

Оскільки Mono розвивається дуже швидко і розробники Ubuntu не завжди встигають за змінами виникає потреба в компіляції mono з svn co svn://anonsvn.mono-project.com/source/trunk/mono*.

$ svn co svn://anonsvn.mono-project.com/source/trunk/mcs
$ svn co svn://anonsvn.mono-project.com/source/trunk/mono
$ svn co svn://anonsvn.mono-project.com/source/trunk/gtk-sharp
$ svn co svn://anonsvn.mono-project.com/source/trunk/gnome-sharp
$ svn co svn://anonsvn.mono-project.com/source/trunk/olive
$ svn co svn://anonsvn.mono-project.com/source/trunk/moon
$ svn co svn://anonsvn.mono-project.com/source/trunk/monodoc
$ sudo apt-get install libavcodec0d libavformat0d libgtk2.0-dev libnspr-dev firefox-dev libavcodec-dev libavformat-dev libasound2-dev librsvg2-dev
$ sudo apt-get install autoconf automake libtool build-essential bison libgtksourceview* libglade*-dev
$ sudo apt-get install prevu
$ sudo prevu-init
Налаштовує середовище для білда. Це може зайняти деякий час.

$ apt-get remove mono-common
$ apt-get install build-essential pkg-config libglib2.0-dev bison libcairo2-dev libungif4-dev libjpeg62-dev libtiff4-dev
Завантажити і зкомпілити libgdiplus.

$ sudo apt-get install mono-mcs
будемо компілити з ubuntu версією компілятора.

Далі стандартно:
$ confugure
$ make
$ sudo make install

(перевірено, взято з форуму ubuntu)

Перед компіляцією gtk-sharp та іншших додатків залежних від моно важливо не забути

$ export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig

Це допоможе уникнути помилку на етапі конфігураціїї
"You need to install either mono or .Net"


Порядок компіляції :
  1. mono + mcs
  2. gtk-sharp
  3. monodoc
  4. mono-tools
  5. gtk-sharp
  6. gnome-sharp
  7. gtksourceview2-sharp
  8. monodevelop
Все зкомпілилось ідеально, крім Firebird і NUit модулів.