Ищем ошибки в monodevelop

Возможные проблемы

Что делать, если система не запускается? Существует множество возможных причин, которые помешают запуску MonoDevelop, и каждая из них требует индивидуального подхода. Если выяснить проблему невозможно, то лучше всего:

  • полностью удалить MonoDevelop и установить на чистую ОС;
  • проверить наличие всех необходимых программ и обновлений;
  • переустановить утилиту, которая связана с MonoDevelop (Unity или Visual Studio, к примеру).

Процесс работы с языком C# сложен и доступен не для многих. Тем не менее, если вам приглянулась идея научиться писать код, то открытая среда разработки MonoDevelop станет отличным решением, особенно для владельцев Linux и macOS.

Creating the Addin

For this tutorial we will use the Addin Maker addin, which simplifies the process of creating, running and debugging an addin. The Addin Maker addin can be installed from the Addin Manager. Once it’s installed, you’ll see a new Miscellaneous/General category in the New Solution dialog, with a “IDE Extension” addin template. Visual Studio for Mac is an extended and rebranded version of MonoDevelop, so you can use this to create an addin that will work for Visual Studio for Mac, Xamarin Studio and MonoDevelop. 

Start out by creating a new addin called “DateInserter”. This will create an addin that you can build and run/debug. If you run it, a new instance of Visual Studio for Mac / Xamarin Studio / MonoDevelop will be launched, and you will see your DateInserter addin in its Addin Manager.

An addin has metadata about its name, version, dependencies, etc. It also defines any number of extensions that plug into extension points defined by other addins, and can also define extension points that other addins can extend.

The metadata, extensions and extension points can be defined via C# attributes, or in one or more XML files with the extension .addin.xml, which are typically embedded resources in the assembly. Attributes are often simpler, but some things can only be done with addin XML, so for simplicity most addins use addin XML so that its extension and extension points are all listed in one place.

The addin created by the Addin Maker uses C# attributes for the metadata in a file called , but its also creates an empty file. Both are in the folder. 

The file should look like this:

The combined namespace and ID should be unique among all MonoDevelop addins. The other attributes are self-explanatory, and many of them are optional, particularly if the addin does not define extension points, but it is good practice to fill them all out.

Addins must declare dependencies on the addins with the extension points they use. In this case, we have a dependency on the and addins, which contain many of the IDE’s core extension points and APIs. By using a constant for the version string, we automatically ensure that the dependencies’ versions match the targeted MonoDevelop version.

Note that the addin engine considers dependencies’ full names to be relative to the addin’s own namespace. If we had referenced the dependency as “MonoDevelop.Ide”, the addin engine would have tried to find an addin called “DateInserter.MonoDevelop.Ide”, and failed. To prevent this, we used the “::” qualifier to make it a global reference.

The empty  file should look like this:

Some extension points accept resources as arguments, so these can be embedded into the assembly too, and hence many addins consist of a single assembly. However, if the addin requires additional files or assemblies, these should be referenced in the Runtime element, so that the addin engine can ensure that they exist, and can package all of the addin’s files into an mpack file for distribution. This addin requires no extra files, so we can ignore or omit this element.

In this tutorial we will use a few core extension points and APIs, but there are many more. The core addins and their extension points and APIs are described in the API Overview document, though it is not reliably kept up to date. There is also a MonkeySpace 2013 video with a high-level overview of core APIs.

Credits

Contributors to this Release 

  • Lluis Sanchez (project management, workbench, debugger, Windows port, web references, NUnit)
  • Michael Hutchinson (ASP.NET, T4, Mac port, MonoTouch)
  • Mike Krueger (text editor, error bubbles, refactoring, hex editor)
  • Levi Bard (C/C++ add-in, vi mode, Vala)
  • Geoff Norton (MonoTouch)
  • Nikhil Sarda (code metrics)
  • Luciano N. Callero (database add-in)
  • Sanjoy Das (vi marks)
  • Carlo Kok
  • Jonathan Pobst (Windows setup)
  • Andrew Jorgensen (QA & packaging)
  • Alan McGovern (QA)

All Contributors

Aaron Bockover, Alberto Paro, Alejandro Serrano, Alexandre Gomes, Alex Graveley, Andrés G. Aragoneses, Andre Filipe de Assuncao e Brito, Andrew Jorgensen, Antonio Ognio, Ankit Jain, Ben Maurer, Ben Motmans, Carlo Kok, Christian Hergert, Daniel Kornhauser, Daniel Morgan, David Makovský, Eric Butler, Erik Dasque, Franciso Martinez, Geoff Norton, Gustavo Giráldez, Iain McCoy, Inigo Illan, Jacob Ilsø Christensen, James Fitzsimons, Jeff Stedfast, Jérémie Laval, Jeroen Zwartepoorte, John BouAnton, John Luke, Joshua Tauberer, Jonathan Hernández Velasco, Jonathan Pobst, Levi Bard, Lluis Sanchez Gual, Luciano N. Callero, Marc Christensen, Marcos David Marín Amador, Martin Willemoes Hansen, Marek Sieradzki, Matej Urbas, Maurício de Lemos Rodrigues Collares Neto, Michael Hutchinson, Miguel de Icaza, Mike Krüger, Muthiah Annamalai, Nick Drochak, Nikhil Sarda, nricciar, Paco Martínez, Pawel Rozanski, Pedro Abelleira Seco, Peter Johanson, Philip Turnbull, Richard Torkar, Rolf Bjarne Kvinge, Rusty Howell, Sanjoy Das, Scott Ellington, Thomas Wiest, Todd Berman, Viktoria Dudka, Vincent Daron, Vinicius Depizzol, Wade Berrier, Yan-ren Tsai and Zach Lute.

Translators

Catalan Jonathan Hernández Velasco, Jordi Mas i Hernández
Czech David Makovský
Danish Martin Willemoes Hansen, Jacob Ilsø Christensen
German Mike Krüger, Masahiro Arai, Zeno Gantner, Gustav Schauwecker, Martin Dederer
Spanish Antonio Ognio, Alejandro Serrano, Andrés G. Aragoneses
French Bruno Bovey, Vincent Daron, Nicolas Favre-Félix
Galician Ignacio Casal Quinteiro
Hungarian Bálint Kriván, Gergely Kiss
Indonesian Fajrin Azis
Italian Alberto Paro, Milo Casagrande
Japanese Atsushi Eno
Dutch André Offringa
Polish Marek Sieradzki
Portuguese Vitor Hugo Barros
Portuguese (Brazil) Mauricio de Lemos Rodrigues Collares Neto, Andre Filipe de Assuncao e Brito, Rafael Teixeira
Russian Maxim Krentovskiy, Semyon Soldatov, Daniel Abramov
Slovenian Matej Urbas
Swedish Daniel Nylander
Turkish Enver Altin
Chinese (China) Yu Lindong, Funda Wang, Ray Wang
Chinese (Taiwan) Yan-ren Tsai
   

Threading model

The general rule is that the project model is thread safe for reading but not for writing. Methods that modify the model must be called in the UI thread, other methods can be called by background threads (unless otherwise specified).

Shared objects

Any subclass can be in two states: Shared and Not Shared. Objects in Shared state can only be modified in the UI thread. This is ensured by calls to in methods that modify the object, which will throw an exception if the method is not called from the UI thread.

Objects in Not Shared state are still not thread safe for modifications, but thread access is not checked, so it is up to the object creater to decide how to ensure that only one single thread is modifying the object at a given time.

By default (when instantiated), objects are in Not Shared state. The state can be switched to Shared by calling on the object. There is no way to transition back. When an object switches to Shared, the virtual method is called, both in the object and all its extensions.

Project and solution loading is done in a background thread, so they are in Not Shared state during all loading process. Once they are fully loaded, they are switched to Shared state.

Async methods

Methods that may take long time to execute are exposed as async methods. Continuations of async methods will be executed in the calling context.

ASP.NET

Web Projects

  • Create web application for any supported language.
  • Compile web application and view in browser using xsp.
  • Project GAC references are synchronised to web.config.
  • Add new ASP.NET files:
    • Page (.aspx) with/without CodeBehind class (partial if language supports it).
    • User control (.ascx) with/without CodeBehind class (partial if language supports it).
    • Web Service (.asmx) with/without CodeBehind class.
    • Web Handler (.ashx) with/without CodeBehind class.
    • Web.config (application or subdirectory depending where it’s added).
    • Master page (.master) with/without CodeBehind class (partial if language supports it) for 2.0 runtime only.
    • Global.asax file with/without CodeBehind class.
  • ASP.NET server controls added to aspx files have corresponding members automatically added to the CodeBehind class at compilation time (in the *.designer.* part if using partial classes).

1 Answer 1

If you want the MonoDevelop IDE, you should download it from the MonoDevelop IDE website as described in the MonoDevelop IDE section of the link you provided.

Если вы хотите использовать MonoDevelop IDE, загрузите его с веб-сайта MonoDevelop IDE, как описано в разделе MonoDevelop IDE по указанной вами ссылке.

В этой статье речь пойдет опять про настройку IDE и на этот раз я покажу наилучшее решение из всех найденных мной для D …

Как известно, D – достаточно молодой язык программирования и, соответственно, пока он не имеет собственной интегрированной среды разработки ( Coedit не в счет, его пока сложно назвать средой разработки, да и на полноценный редактор он как-то не тянет), что еще также связано с довольно-таки любопытным мнением разработчиков самого языка, согласно которому для начала работы с языком хватит компилятора и обычного текстового редактора (с учетом того, что у каждого программиста есть свой излюбленный текстовый редактор да и большинство современных программ для редактирования исходного кода, как правило, уже имеют встроенную подсветку синтаксиса D и автодополнение в его зачаточной форме. Кстати, по поводу любимого текстового редактора: Bagomot ’у более симпатичен Sublime Text 3, ну а меня, как ни странно, больше радует gedit ).

Несмотря на это, сейчас активно развиваются сторонние дополнения к универсальным средам разработки, таким как Visual Studio или Eclipse , и которые добавляют некоторую поддержку D в эти монструозные программные пакеты. Как и всегда, без дегтя меда не бывает, и если вы работаете в нескольких операционных системах, а хочется унифицированного и простого вида привычного рабочего пространства, то с этим придется жестоко проститься и придется содержать разные IDE , что нисколько не радует…

Однако, как уже было упомянуто выше, я нашел хорошее решение, которое позволяет не задумываться о том, где и с чем работаешь, и такого рода решением является Monodevelop (под Windows она называется Xamarin Studio , хотя под Linux все то же самое) с расширением MonoD .

Единственным минусом данного продукта является то, что, в основном, это дело писалось под . NET и требует наличия установленного . NET Framework 4.5 (пользователи Windows 7/8/10 могут не париться – он уже по идее предустановлен) или Mono Runtime .

Для того, чтобы воспользоваться всеми прелестями MonoD , нужно сначала поставить Monodevelop (или Xamarin Studio ), причем, установка для разных операционных систем выглядит по-разному и что самое интересное, больше всех повезло пользователям Linux (собственно, как обычно…).

References

 http://dev.mysql.com/usingmysql/dotnet/
https://github.com/mono/monodevelop/blob/master/extras/MonoDevelop.Database/MonoDevelop.Database.Sql/Providers/AbstractConnectionProvider.cs
https://github.com/mono/monodevelop/blob/master/extras/MonoDevelop.Database/MonoDevelop.Database.Sql/IDbFactory.cs
https://github.com/mono/monodevelop/blob/master/extras/MonoDevelop.Database/MonoDevelop.Database.Sql/Providers/IGuiProvider.cs
https://github.com/mono/monodevelop/blob/master/extras/MonoDevelop.Database/MonoDevelop.Database.Sql/ConnectionPool/AbstractPooledDbConnection.cs
https://github.com/mono/monodevelop/blob/master/extras/MonoDevelop.Database/MonoDevelop.Database.Sql/Providers/AbstractSchemaProvider.cs
https://github.com/mono/monodevelop/blob/master/extras/MonoDevelop.Database/MonoDevelop.Database.Sql/IDbLinq.cs
https://github.com/mono/monodevelop/blob/master/extras/MonoDevelop.Database/MonoDevelop.Database.Sql/Dialect/ISqlDialect.cs

Отладка исходного кода

Текущие открытые исходные файлы отображаются в MonoDevelop в виде вкладок и могут быть отредактированы как в стандартном текстовом редакторе. Также есть серая шкала точек останова (breakpoint bar) слева от панели редактора. Щелчок на этой шкале добавит так называемый маркер точки останова ( breakpoint ) напротив текущей строчки кода.

Добавление breakpoint’а на линию сообщает Unity, что по достижению этой линии во время Play Mode, следует приостановить выполнение скрипта. Когда скрипт так “замораживается”, вы можете использовать отладчик для определения того, что именно делает скрипт.

При приостановке выполнения на точке останова, во вкладках в нижней части окна MonoDevelop показывается информация о текущем состоянии выполнения

Возможно, наиболее важной из вкладок является Locals

В этой вкладке показаны значения локальных переменных в текущей функции (псевдо-локальная переменная с именем this автоматически доступна в каждой функции, хоть она и не объявлена явно; это ссылка на текущий экземпляр скрипта, так что через “this” можно получить доступ ко всем переменным, объявленным в скрипте). Вы можете использовать точки прерывания вместе с вкладкой Locals для получения эффекта, аналогичного добавлению выражений print в ваш код — вы можете просматривать значения переменных в любой удобный вам момент времени. Однако во вкладке Locals вы также можете редактировать значения переменных. Это может оказаться полезным в случае, если вы нашли неверно установленную переменную и хотите проверить, пропадёт ли проблема при установке правильного значения.

Другая полезная функция MonoDevelop — пошаговое выполнение. Когда выполнение приостановится на точке останова, станет доступна шкала отладочных инструментов в верхней части окна MonoDevelop:-

Первые четыре кнопки известны как Continue (продолжить), Step Over (шаг через), Step In (шаг внутрь) и Step Out (шаг наружу) и могут срабатывать по командам из меню Run (самая правая кнопка, Detach может быть использована для окончания отладочной сессии). Continue продолжает выполнение до очередной точки останова. И Step Over и Step In выполняют одну строку кода в один момент времени. Различия между ними в том, что Step Over полностью выполняет любые функции за одну линию, а Step In позволяет “шагнуть” внутрь функции. Так зачастую можно случайно использовать Step In для корректно работающих функций, существует Step Out, который продолжит выполнение до конца текущей функции и остановится снова в коде, который её вызвал.

Детальное описание техник отладки исходного кода не подходит этому разделу, но существуют различные книги и web ресурсы, в которых можно найти все подробности по этой теме. Кроме того, проведение небольших экспериментов поможет почувствовать мощь этих инструментов и понять как их использовать для отслеживания основных типов ошибок.

For the Lazy

sudo apt-get install autoconf libtool-bin libglade2-dev libgnomeui-dev cmake libssh-dev libssh2-1* nuget mono-devel git intltool curlgit clone https://github.com/mono/monocd mono./autogen.sh —prefix=/opt/monomake get-monolite-latestmake; sudo make install; cd ..

git clone —branch gtk-sharp-2-12-branch https://github.com/mono/gtk-sharp.gitcd gtk-sharp./bootstrap-2.12 —prefix=/opt/monomake; sudo make install; cd ..

git clone https://github.com/mono/gnome-sharp.gitcd gnome-sharp# needed to edit Settings.cs atom ./sample/gconf/Settings.cs./bootstrap-2.24 —prefix=/opt/monomake; sudo make install; cd ..

git clone https://github.com/mono/xamarin-gtk-theme.gitcd xamarin-gtk-theme ./autogen.sh —prefix=/usrmake; sudo make install; cd ..

# Building monodevelop (git clone may be different for you)git clone git@github.com:mono/monodevelop.git cd monodevelop./configuremakemake run # INSTALL MSBUILD# This is broken:git clone https://github.com/mono/msbuildcd msbuildgit checkout -b xplat-master origin/xplat-master./cibuild.sh —scope Compile —target Mono —host Mono

# Alternative — get an os x box grab msbuild from there and install and install it # in opt/mono/lib/mono/msbuild/15.0/bin/MSBuild.dll

sudo apt-key adv —keyserver hkp://keyserver.ubuntu.com:80 —recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EFecho «deb http://download.mono-project.com/repo/ubuntu xenial main» | sudo tee /etc/apt/sources.list.d/mono-official.listsudo apt-get updatesudoapt-get install msbuildsudocp -R /usr/lib/mono/msbuild/15.0 /opt/mono/lib/mono/msbuildsudocp /usr/bin/msbuild /opt/mono/bin

sudo mozroots —import —machine —sync

sudo certmgr -ssl -m https://go.microsoft.com

sudo certmgr -ssl -m https://nugetgallery.blob.core.windows.net

sudo certmgr -ssl -m https://nuget.org

git clonehttps://github.com/fsharp/fsharpcd fsharp./autogen.sh —prefix=/opt/monomake; sudo make install; cd ..

# install PCL# go to windows C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETPortable# the portable libraries should end up in /opt/mono/lib/mono/xbuild-frameworks/.NETPortable# for me it looks like:# /opt/mono/lib/mono/xbuild-frameworks/.NETPortable$ ls# v4.0  v4.5  v4.6# Building monodevelop (git clone may be different for you)git clone git@github.com:mono/monodevelop.gitcd monodevelop./configuremakemake run

Writing Add-ins

Creating a Simple Add-in
This walkthrough will guide you through the process of creating a simple add-in, introducing the fundamentals of the add-in system and some of MonoDevelop’s core APIs.

Creating a Simple project template using Add-ins
This walkthrough will guide you through the process of creating a simple project template using add-ins (in Visual Studio for Mac).

Walk through: Extending the Project Pad
This tutorial explains how to implement an addin that extends the project pad. The idea for this extension is to be able to show the classes that are implemented in a file as child nodes of that file in the project pad.

How to extend the Project Model
This article explains how to extend the project model to support new types of projects or to add additional information to existing project types.

Syntax mode definition
This article explains how to create a syntax highlighting mode for a new file type.

Editor color scheme definition
This article explains how to create a syntax highlighting mode for a new file type.

Publishing an Add-in
This article explains how to publish an add-in to make it available to MonoDevelop users.

Introduction to Mono.Addins
This article explains the library basics and some examples. Mono.Addins is the add-in engine used by MonoDevelop.

Mono.Addins Reference Manual
An in-depth explanation of all Mono.Addins features. Mono.Addins is the add-in engine used by MonoDevelop.

Conclusion

It’s hard to get a .NET environment running on Linux these days — but it’s doable :). Btw. we could need help improving the monodevelop Linux client — esp. dark theme support is lacking a bit 🙂

For the Lazy

Lately I’ve been reinstalling Ubuntu 17.10 and I did following (may be helpful):sudo apt-get install autoconf libtool-bin libglade2-dev libgnomeui-dev cmake libssh-dev libssh2-1* nuget mono-devel git intltool curl
git clone https://github.com/mono/monocd mono./autogen.sh —prefix=/opt/monomake get-monolite-latestmake; sudo make install; cd ..

git clone —branch gtk-sharp-2-12-branch https://github.com/mono/gtk-sharp.gitcd gtk-sharp./bootstrap-2.12 —prefix=/opt/monomake; sudo make install; cd ..

git clone https://github.com/mono/gnome-sharp.gitcd gnome-sharp# needed to edit Settings.cs atom ./sample/gconf/Settings.cs./bootstrap-2.24 —prefix=/opt/monomake; sudo make install; cd ..

git clone https://github.com/mono/xamarin-gtk-theme.gitcd xamarin-gtk-theme ./autogen.sh —prefix=/usrmake; sudo make install; cd ..

# Building monodevelop (git clone may be different for you)git clone git@github.com:mono/monodevelop.git cd monodevelop./configuremakemake run 
# INSTALL MSBUILD# This is broken:git clone https://github.com/mono/msbuildcd msbuildgit checkout -b xplat-master origin/xplat-master./cibuild.sh —scope Compile —target Mono —host Mono

# Alternative — get an os x box grab msbuild from there and install and install it # in opt/mono/lib/mono/msbuild/15.0/bin/MSBuild.dll

sudo apt-key adv —keyserver hkp://keyserver.ubuntu.com:80 —recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EFecho «deb http://download.mono-project.com/repo/ubuntu xenial main» | sudo tee /etc/apt/sources.list.d/mono-official.listsudo apt-get updatesudoapt-get install msbuildsudocp -R /usr/lib/mono/msbuild/15.0 /opt/mono/lib/mono/msbuildsudocp /usr/bin/msbuild /opt/mono/bin

sudo mozroots —import —machine —sync

sudo certmgr -ssl -m https://go.microsoft.com

sudo certmgr -ssl -m https://nugetgallery.blob.core.windows.net

sudo certmgr -ssl -m https://nuget.org

git clonehttps://github.com/fsharp/fsharpcd fsharp./autogen.sh —prefix=/opt/monomake; sudo make install; cd ..

# install PCL# go to windows C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETPortable# the portable libraries should end up in /opt/mono/lib/mono/xbuild-frameworks/.NETPortable# for me it looks like:# /opt/mono/lib/mono/xbuild-frameworks/.NETPortable$ ls# v4.0  v4.5  v4.6
# Building monodevelop (git clone may be different for you)git clone git@github.com:mono/monodevelop.gitcd monodevelop./configuremakemake run

Visual Design

Gtk# Designer

Integrated visual designer for building Gtk# interfaces.

  • Allows targeting Gtk# 2.4, 2.6 and 2.8.
  • Supports visual design of custom widgets.
  • Support for reusable widget libraries. Custom widgets are shown in the toolbox.
  • Dynamic reloading of custom widgets. After compiling a change in a custom widget, all design windows where the widget is being used will be automatically updated.
  • Widget library reference tracking. When new widgets are added to a design surface, the required assembly references will be added to the project.
  • Visual editing of stock icon factory.
  • Glade project import.

Toolbox

  • One single toolbox for all designers (Gtk#, ASP.NET, etc.)
  • New items can be added by registering new assemblies.
  • The toolbar is dynamically updated to show the items available for the active file and project.
  • Two display modes: normal and compact (with no labels).
  • Widget search

Credits

Contributors to this Release 

  • Lluis Sanchez (project management, workbench, release engineering)
  • Michael Hutchinson (Mac port, MonoTouch, MonoMac, MonoDroid)
  • Mike Krueger (text editor, refactoring, hex editor)
  • Alan McGovern (MonoTouch add-in)
  • Jeff Stedfast (MonoTouch add-in)
  • Rolf Bjarne (MonoTouch add-in)
  • Andreia Gaita (MonoDroid)
  • Alex Corrado (packaging)
  • Hugo Bonacci (art)

All Contributors

Aaron Bockover, Alan McGovern, Alberto Paro, Alejandro Serrano, Alex Corrado, Alexandre Gomes, Alex Graveley, Andreia Gaita, Andrés G. Aragoneses, Andre Filipe de Assuncao e Brito, Andrew Jorgensen, Antonio Ognio, Ankit Jain, Ben Maurer, Ben Motmans, Carlo Kok, Christian Hergert, Daniel Kornhauser, Daniel Morgan, David Makovský, Eric Butler, Erik Dasque, Franciso Martinez, Geoff Norton, Gustavo Giráldez, Hugo Bonacci, Iain McCoy, Inigo Illan, Jacob Ilsø Christensen, James Fitzsimons, Jeff Stedfast, Jérémie Laval, Jeroen Zwartepoorte, John BouAnton, John Luke, Joshua Tauberer, Jonathan Hernández Velasco, Jonathan Pobst, Levi Bard, Lluis Sanchez Gual, Luciano N. Callero, Marc Christensen, Marcos David Marín Amador, Martin Willemoes Hansen, Marek Sieradzki, Matej Urbas, Maurício de Lemos Rodrigues Collares Neto, Michael Hutchinson, Miguel de Icaza, Mike Krüger, Muthiah Annamalai, Nick Drochak, Nikhil Sarda, nricciar, Paco Martínez, Pawel Rozanski, Pedro Abelleira Seco, Peter Johanson, Philip Turnbull, Richard Torkar, Rolf Bjarne Kvinge, Rusty Howell, Sanjoy Das, Scott Ellington, Thomas Wiest, Todd Berman, Viktoria Dudka, Vincent Daron, Vinicius Depizzol, Wade Berrier, Yan-ren Tsai and Zach Lute.

Translators

Catalan Jonathan Hernández Velasco, Jordi Mas i Hernández
Czech David Makovský
Danish Martin Willemoes Hansen, Jacob Ilsø Christensen
German Mike Krüger, Masahiro Arai, Zeno Gantner, Gustav Schauwecker, Martin Dederer
Spanish Antonio Ognio, Alejandro Serrano, Andrés G. Aragoneses
French Bruno Bovey, Vincent Daron, Nicolas Favre-Félix
Galician Ignacio Casal Quinteiro
Hungarian Bálint Kriván, Gergely Kiss
Indonesian Fajrin Azis
Italian Alberto Paro, Milo Casagrande
Japanese Atsushi Eno
Dutch André Offringa
Polish Marek Sieradzki
Portuguese Vitor Hugo Barros
Portuguese (Brazil) Mauricio de Lemos Rodrigues Collares Neto, Andre Filipe de Assuncao e Brito, Rafael Teixeira
Russian Maxim Krentovskiy, Semyon Soldatov, Daniel Abramov
Slovenian Matej Urbas
Swedish Daniel Nylander
Turkish Enver Altin
Chinese (China) Yu Lindong, Funda Wang, Ray Wang
Chinese (Taiwan) Yan-ren Tsai
   

Step 3: Using the new library

Setting the Startup Project

Now we have two projects in our solution: an executable and a library. A solution can have multiple executable projects. You can specify the startup project (i.e. the project which is built and run when using the “Run” command) by right clicking on the Solution icon in the Solution pad and choosing “Options”, then Common->Startup Properties. From there you can select single or multiple projects:

A solution with multiple projects will build and execute all of them in the order you specify. However, we want to set our startup application to “MyApplication” because this is the executable that we want to run.

Referencing our Library

If we are going to be able to use our new library, MonoDevelop needs to know this. We do this by adding a reference to it. From the Solution Pad, expand the node for our project “MyApplication”, this will reveal a References node among others. Right click this and select “Edit References”. This will bring up the References dialog. Select the “Project” tab. Our library should appear in the list, and we can check it as so:

Click “Ok”. Now we have all the classes in our library “MyLibrary” available to our application (exactly one). Let’s test this by creating an instance of the class “MyClass”. Add the following to MyApplication->Main.cs:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector