<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://community.sharpdevelop.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>SharpDevelop Community</title><link>http://community.sharpdevelop.net/blogs/</link><description>Get your problems solved!</description><dc:language>en-US</dc:language><generator>CommunityServer 2007.1 SP2 (Build: 31113.47)</generator><item><title>Debugger visualizers - a Google summer of code project</title><link>http://community.sharpdevelop.net/blogs/martinkonicek/archive/2009/06/29/first-post.aspx</link><pubDate>Mon, 29 Jun 2009 13:24:00 GMT</pubDate><guid isPermaLink="false">1b90d1c1-04e6-45b0-b51d-b665527d49b9:26945</guid><dc:creator>martinkonicek</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;my name is Martin Konicek and starting this summer, I will be trying to make your debugging experience in SharpDevelop even better. This blog will be about my project for &lt;a href="http://socghop.appspot.com/org/home/google/gsoc2009/sharpdevelop"&gt;Google summer of code 2009&lt;/a&gt; - &lt;b&gt;Debugger visualizers&lt;/b&gt;. The exciting part is that I&amp;#39;ll be working on features that are not present in &lt;i&gt;any&lt;/i&gt; IDE today.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Motivation&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;The idea is to introduce new ways to let you observe the state of the program during debugging. For me, by far the most used debugger feature are the tooltips. The problem with tooltips is they never show you the data structure &amp;quot;as a whole&amp;quot;. Here we have two objects having a reference to each other:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;img alt="Tooltips are not perfect" src="http://community.sharpdevelop.net/blogs/martinkonicek/images/tooltipProblem.png" width="518" height="459" /&gt;&lt;/p&gt;
&lt;p&gt;As we can see, the tooltips can be expanded forever, even if we have only two objects forming a loop - there is no easy was to tell this information just from the tooltips. Long ago, I was thinking how gain more &lt;i&gt;insight&lt;/i&gt; - what about displaying the objects in memory and references between them as an &lt;b&gt;oriented graph&lt;/b&gt;, updating live when stepping in the debugger? I wrote it as a hobby project, which gave me important lessons how not to do that.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Object graph visualizer&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;I found out that SharpDevelop team had similar idea for Google summer of code, great! I applied, researched and wrote a prototype, which I sent to David Srbecky, the author of SharpDevelop debugger and my mentor. The prototype looked like this:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Object graph visualizer prototype" src="http://community.sharpdevelop.net/blogs/martinkonicek/images/objectGraphPrototypeSmall.png" width="600" height="398" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;In the picture, the visualizer (right) shows all objects that can be reached from variable &lt;i&gt;&amp;quot;a&amp;quot;&lt;/i&gt; in the program being debugged (left).&lt;/p&gt;
&lt;p&gt;There is one more visualizer that is totally missing in today&amp;#39;s
IDEs in my opinion, and will be implemented. More about that next time.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Bio&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;I&amp;#39;m 23, from the Czech Republic, currently studying CS at Charles University in the beautiful city of Prague. I think .NET is great, I have used it as my primary platform for a couple of years now. I&amp;#39;m teaching basics of programming to freshmen at our university - I recommend this to everyone, it&amp;#39;s a great experience. I have a personal programming blog &lt;a href="http://coding-time.blogspot.com"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Stay tuned for updates..&lt;/p&gt;&lt;img src="http://community.sharpdevelop.net/aggbug.aspx?PostID=26945" width="1" height="1"&gt;</description><category domain="http://community.sharpdevelop.net/blogs/martinkonicek/archive/tags/gsoc/default.aspx">gsoc</category></item><item><title>Debugging IronPython Code in SharpDevelop</title><link>http://community.sharpdevelop.net/blogs/mattward/archive/2009/05/30/DebuggingIronPythonCode.aspx</link><pubDate>Sat, 30 May 2009 12:40:00 GMT</pubDate><guid isPermaLink="false">1b90d1c1-04e6-45b0-b51d-b665527d49b9:26587</guid><dc:creator>MattWard</dc:creator><slash:comments>2</slash:comments><description>&lt;p&gt;With &lt;a href="http://build.sharpdevelop.net/BuildArtefacts/"&gt;
    SharpDevelop 3.1&lt;/a&gt; you can now debug IronPython code with the 
    IronPython Interpreter (ipy.exe).&lt;/p&gt;
&lt;p&gt;Before you start make sure the debugger is set to use the 
    &lt;b&gt;Just My Code&lt;/b&gt; feature. From the Tools menu select Options and 
    then click the Debugging category.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Debugger options for debugging IronPython code" src="http://community.sharpdevelop.net/photos/mattward/images/original/DebuggingOptionsWhenDebuggingIronPythonCode.aspx" /&gt;&lt;/p&gt;
&lt;p&gt;Ensure that the &lt;b&gt;Just My Code&lt;/b&gt; feature is checked and that 
    the &lt;b&gt;Step over code without symbols&lt;/b&gt; is not checked. If the 
    Step over code without symbols option is selected then stepping 
    will not work properly and lines of code will be skipped over.&lt;/p&gt;
&lt;p&gt;There are two ways to debug your code. You can use the Python 
    menu or modify the project options. We will look at both of these 
    alternatives. First open your IronPython project into SharpDevelop. 
    Open your main file and make sure it is the active text editor 
    window. Set a breakpoint somewhere in your code. Then from the 
    Python menu select Run.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Python menu option to run with debugger" src="http://community.sharpdevelop.net/photos/mattward/images/original/PythonRunWithDebuggerMenuItem.aspx" /&gt;&lt;/p&gt;
&lt;p&gt;This will start ipy.exe which will run your code and the 
    debugger should stop the execution at the breakpoint.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Debugging IronPython code" src="http://community.sharpdevelop.net/photos/mattward/images/original/DebuggingIronPythonCode.aspx" /&gt;&lt;/p&gt;
&lt;p&gt;From this point you can do the usual debugging activities such 
    as stepping through your code, viewing the callstack, adding items 
    to the watch window, etc.&lt;/p&gt;
&lt;p&gt;If you want to use a different ipy.exe then this can be 
    specified in the Python Options dialog (Tools menu | Options).&lt;/p&gt;
&lt;p&gt;&lt;img alt="Python options dialog" src="http://community.sharpdevelop.net/photos/mattward/images/original/PythonToolsOptionsDialog.aspx" /&gt;&lt;/p&gt;
&lt;p&gt;To enable debugging when you press F5 or select the Debug Run 
    menu option you can modify the project options. From the Projects 
    menu select Project Options and then open the Debug tab. Here you 
    should change the Start Action to &lt;b&gt;Start external program&lt;/b&gt; and 
    use the browse button to locate ipy.exe. In the Start Options add 
    the following command line arguments, changing the name of your 
    main file as required.&lt;/p&gt;
&lt;pre&gt;-D ${ProjectDir}\Program.py&lt;/pre&gt;
&lt;p&gt;Once these changes are saved you can then press F5 and ipy.exe 
    will be run under the debugger instead of running the compiled 
    executable.3&lt;/p&gt;
&lt;h2&gt;Issues&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;No support for debugging the executable produced by the 
      IronPython compiler since it does not produce debug symbols (i.e. 
      .pdb files).&lt;/li&gt;
&lt;li&gt;
        When using ipy.exe you need to add references to .NET 
        assemblies explicitly in your code except for System which is 
        included by default. For example:
&lt;pre&gt;import clr &lt;br /&gt;clr.AddReference(&amp;quot;System.Windows.Forms&amp;quot;) &lt;br /&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Thanks&lt;/h2&gt;
&lt;p&gt;Thanks to 
    &lt;a href="http://community.sharpdevelop.net/blogs/dsrbecky/"&gt;David 
    Srbecky&lt;/a&gt;, SharpDevelop&amp;#39;s debugger expert and maintainer, 
    for reviewing the code changes I wanted to make to the debugger and 
    making sure nothing was broken. Adding support for debugging 
    IronPython was straightforward and required 10-15 lines of new code 
    thanks to the code already written by David.&lt;/p&gt;
&lt;p&gt;Thanks also to &lt;a href="http://devhawk.net/"&gt;Harry Pierson&lt;/a&gt; 
    (IronPython Program Manager at Microsoft) who has written a great 
    set of blog posts on 
    &lt;a href="http://devhawk.net/CategoryView,category,Debugger.aspx"&gt;
    creating an IronPython debugger in IronPython&lt;/a&gt; which gave me the 
    reason why SharpDevelop&amp;#39;s debugger was not working when 
    debugging IronPython code.&lt;/p&gt;&lt;img src="http://community.sharpdevelop.net/aggbug.aspx?PostID=26587" width="1" height="1"&gt;</description><category domain="http://community.sharpdevelop.net/blogs/mattward/archive/tags/Python/default.aspx">Python</category></item><item><title>IronPython 2.0 Forms Designer</title><link>http://community.sharpdevelop.net/blogs/mattward/archive/2009/05/12/IronPython2FormsDesigner.aspx</link><pubDate>Tue, 12 May 2009 19:50:00 GMT</pubDate><guid isPermaLink="false">1b90d1c1-04e6-45b0-b51d-b665527d49b9:26404</guid><dc:creator>MattWard</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Support for designing Windows Forms in IronPython is now 
    available in SharpDevelop 3.1. The 
    &lt;a href="http://community.sharpdevelop.net/blogs/mattward/archive/2007/10/21/IronPythonIntegrationInSharpDevelop22.aspx"&gt;
    original IronPython forms designer&lt;/a&gt; was removed when 
    SharpDevelop 3.0 began supporting 
    &lt;a href="http://www.codeplex.com/IronPython"&gt;IronPython 2.0&lt;/a&gt; 
    which had removed support for generating IronPython code from 
    &lt;a href="http://msdn.microsoft.com/en-us/library/y2k85ax6.aspx"&gt;
    Microsoft&amp;#39;s CodeDOM&lt;/a&gt;. The forms designer has now been 
    re-implemented to use the IronPython 
    &lt;a href="http://en.wikipedia.org/wiki/Abstract_syntax_tree"&gt;
    abstract syntax tree&lt;/a&gt; (AST) and no longer relies on the 
    CodeDOM.  &lt;/p&gt;
&lt;h2&gt;Creating a Windows Application&lt;/h2&gt;
&lt;p&gt;To create a Windows Application open up the new project dialog 
    by selecting &lt;b&gt;New&lt;/b&gt; then &lt;b&gt;Solution&lt;/b&gt; from the &lt;b&gt;File&lt;/b&gt; 
    menu. Select the Python category to show the available project 
    templates. Select the Windows Application project template, enter a 
    name and location and click the Create button.&lt;/p&gt;
&lt;p&gt;&lt;img alt="New Python Project Dialog" src="http://community.sharpdevelop.net/photos/mattward/images/original/NewPythonWinFormsProject.aspx" /&gt;&lt;/p&gt;
&lt;h2&gt;Designing Windows Forms&lt;/h2&gt;
&lt;p&gt;The Windows Forms designer is not yet complete so be warned that 
    it could generate form code that will no longer compile.&lt;/p&gt;
&lt;p&gt;The designer can be opened by opening a form in the text editor 
    and selecting the Design tab at the bottom of the editor.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Python main form before opening the designer" src="http://community.sharpdevelop.net/photos/mattward/images/original/PythonMainFormBeforeOpeningInDesigner.aspx" /&gt;&lt;/p&gt;
&lt;p&gt;Once open in the designer you can add controls to the form by 
    dragging the controls from the Tools window. In the screenshot 
    below a label, text box and a button have been added.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Main form designed in designer" src="http://community.sharpdevelop.net/photos/mattward/images/original/PythonMainFormInDesigner.aspx" /&gt;&lt;/p&gt;
&lt;p&gt;Click the Source tab at the bottom of the editor to view the 
    generated code in the InitializeComponents method.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Generated form code" src="http://community.sharpdevelop.net/photos/mattward/images/original/PythonMainFormGeneratedCode.aspx" /&gt;&lt;/p&gt;
&lt;h2&gt;Limitations&lt;/h2&gt;
&lt;p&gt;The IronPython forms designer is not yet complete and the 
    following are some of the known limitations.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;No support for project or local form resources.&lt;/li&gt;
&lt;li&gt;No support for icons.&lt;/li&gt;
&lt;li&gt;Incomplete support for ToolStripItems and menu strips.&lt;/li&gt;
&lt;li&gt;Incomplete support for ListViewItems.&lt;/li&gt;
&lt;li&gt;No support for TreeViewItems.&lt;/li&gt;
&lt;li&gt;Incomplete support for non-visual components (e.g. 
      Timers).&lt;/li&gt;
&lt;li&gt;Controls needed to be fully namespace qualified.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Forms Designer Internals&lt;/h2&gt;
&lt;p&gt;For those interested in how the forms designer actually works at 
    a high level we will now look at what the IronPython forms designer 
    does when loading and then generating code for a form. &lt;/p&gt;
&lt;p&gt;To show the form in the designer the following steps are 
    executed.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The form&amp;#39;s code is parsed and an IronPython AST 
      (PythonAst object) is created.&lt;/li&gt;
&lt;li&gt;The AST is then visited and each control is added to the 
      forms designer and the control&amp;#39;s properties are set.&lt;/li&gt;
&lt;li&gt;The form&amp;#39;s properties are set in the designer and the 
      form is displayed.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;To generate the code after the form has been designed the 
    following steps are executed.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The form is obtained from the forms designer.&lt;/li&gt;
&lt;li&gt;Each of the child components of the form have their 
      properties checked to see if they need to be serialized. This can 
      be done by getting all the 
      &lt;a href="http://msdn.microsoft.com/en-us/library/system.componentmodel.typedescriptor.getproperties.aspx"&gt;
      property descriptors&lt;/a&gt; and then checking the 
      &lt;a href="http://msdn.microsoft.com/en-us/library/system.componentmodel.propertydescriptor.shouldserializevalue.aspx"&gt;
      ShouldSerializeValue&lt;/a&gt; method. If they do need to be serialized 
      then code is generated for them and added to a StringBuilder.&lt;/li&gt;
&lt;li&gt;After all the child components are added the code for the 
      form is generated.&lt;/li&gt;
&lt;li&gt;Finally the generated code is inserted into the text editor 
      inside the InitializeComponent method, replacing any existing 
      code.&lt;/li&gt;
&lt;/ol&gt;&lt;img src="http://community.sharpdevelop.net/aggbug.aspx?PostID=26404" width="1" height="1"&gt;</description><category domain="http://community.sharpdevelop.net/blogs/mattward/archive/tags/Python/default.aspx">Python</category></item><item><title>Converting C# and VB.NET Code to IronPython</title><link>http://community.sharpdevelop.net/blogs/mattward/archive/2009/05/11/ConvertingCSharpVBNetCodeToIronPython.aspx</link><pubDate>Mon, 11 May 2009 19:07:00 GMT</pubDate><guid isPermaLink="false">1b90d1c1-04e6-45b0-b51d-b665527d49b9:26394</guid><dc:creator>MattWard</dc:creator><slash:comments>2</slash:comments><description>&lt;p&gt;SharpDevelop 3.1 now supports converting C# and VB.NET code to 
    IronPython. It can convert a single file or an entire project. The 
    code to convert between these languages is still under development 
    and has some limitations. &lt;/p&gt;
&lt;h2&gt;Converting an Individual File&lt;/h2&gt;
&lt;p&gt;To convert a C# or VB.NET file, open it in SharpDevelop&amp;#39;s 
    text editor, then from &lt;b&gt;Tools&lt;/b&gt; menu select &lt;b&gt;Convert code to 
    Python&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Convert code to Python menu option." src="http://community.sharpdevelop.net/photos/mattward/images/original/ConvertCodeToPythonMenuItem.aspx" /&gt;&lt;/p&gt;
&lt;p&gt;The code conversion is limited to converting classes so it will 
    not convert an arbitary piece of code that is not inside a 
    class.&lt;/p&gt;
&lt;p&gt;&lt;img alt="C# code before conversion." src="http://community.sharpdevelop.net/photos/mattward/images/original/CSharpCodeBeforeConversionToPython.aspx" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="C# code after conversion to Python" src="http://community.sharpdevelop.net/photos/mattward/images/original/ConvertedCSharpClassAsPython.aspx" /&gt;&lt;/p&gt;
&lt;h2&gt;Converting a Project&lt;/h2&gt;
&lt;p&gt;To convert a C# or VB.NET project, open it in SharpDevelop, then 
    from the &lt;b&gt;Project&lt;/b&gt; menu select &lt;b&gt;Convert From C# to 
    Python&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Convert from C# project to Python project menu option." src="http://community.sharpdevelop.net/photos/mattward/images/original/ProjectConvertFromCSharpToPythonMenuItem.aspx" /&gt;&lt;/p&gt;
&lt;p&gt;Once converted the project will most likely not compile straight 
    away due to limitations in the implementation. At the time of 
    writing converting a project has the following limitations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Project&amp;#39;s Main File is not set.&lt;/li&gt;
&lt;li&gt;No code generated to call the project&amp;#39;s Main entry 
      method.&lt;/li&gt;
&lt;li&gt;Namespace imports do include all the used classes.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Code Conversion Internals&lt;/h2&gt;
&lt;p&gt;Converting code to IronPython was originally supported in 
    &lt;a href="http://community.sharpdevelop.net/blogs/mattward/archive/2007/10/21/IronPythonIntegrationInSharpDevelop22.aspx"&gt;
    SharpDevelop 2.2&lt;/a&gt; and was based on converting code to a 
    &lt;a href="http://msdn.microsoft.com/en-us/library/y2k85ax6.aspx"&gt;
    Microsoft CodeDOM&lt;/a&gt; and then getting IronPython 1.0 to generate 
    the Python code. In IronPython 2.0 this CodeDOM support was removed 
    so the code conversion feature was removed from SharpDevelop 3.0 
    since that was using IronPython 2.0. In SharpDevelop 3.1 the code 
    conversion has been rewritten to no longer use the CodeDOM support. 
    It now works by executing the following simple steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The C# or VB.NET code is parsed using SharpDevelop&amp;#39;s 
      parsing library 
      &lt;a href="http://laputa.sharpdevelop.net/NRefactoryTutorialVideo.aspx"&gt;
      NRefactory&lt;/a&gt; and an 
      &lt;a href="http://en.wikipedia.org/wiki/Abstract_syntax_tree"&gt;
      abstract syntax tree (AST)&lt;/a&gt; is generated.&lt;/li&gt;
&lt;li&gt;A &lt;a href="http://en.wikipedia.org/wiki/Visitor_pattern"&gt;
      visitor&lt;/a&gt; class then walks this AST and generates Python code 
      which is added to a StringBuilder.&lt;/li&gt;
&lt;li&gt;Once the visit is complete the generated Python code is then 
      displayed or saved to disk.&lt;/li&gt;
&lt;/ol&gt;&lt;img src="http://community.sharpdevelop.net/aggbug.aspx?PostID=26394" width="1" height="1"&gt;</description></item><item><title>NUnit 2.5 Support</title><link>http://community.sharpdevelop.net/blogs/mattward/archive/2009/05/10/NUnit25Support.aspx</link><pubDate>Sun, 10 May 2009 16:46:00 GMT</pubDate><guid isPermaLink="false">1b90d1c1-04e6-45b0-b51d-b665527d49b9:26381</guid><dc:creator>MattWard</dc:creator><slash:comments>2</slash:comments><description>&lt;p&gt;SharpDevelop 3.1 now supports &lt;a href="http://nunit.org"&gt;NUnit 
    2.5&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A summary of which NUnit version is supported by SharpDevelop is 
    shown in the table below.&lt;/p&gt;
&lt;table class="article "&gt;

&lt;tr&gt;
&lt;td&gt;SharpDevelop 3.1&lt;/td&gt;
&lt;td&gt;NUnit 2.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SharpDevelop 3.0&lt;/td&gt;
&lt;td&gt;NUnit 2.4.8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SharpDevelop 2.2.1&lt;/td&gt;
&lt;td&gt;NUnit 2.4.7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SharpDevelop 1.1&lt;/td&gt;
&lt;td&gt;NUnit 2.2&lt;/td&gt;
&lt;/tr&gt;

&lt;/table&gt;
&lt;h2&gt;NUnit 2.5 Changes&lt;/h2&gt;
&lt;p&gt;NUnit 2.5 has changed quite substantially compared with the 
    previous 2.4.8 release, as outlined in the 
    &lt;a href="http://nunit.com/index.php?p=releaseNotes&amp;amp;r=2.5"&gt;NUnit 
    2.5 release notes&lt;/a&gt;. The problems that we had when migrating 
    SharpDevelop&amp;#39;s unit tests to NUnit 2.5 were as follows.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;b&gt;Assert.IsInstanceOfType has been replaced by 
        Assert.IsInstanceOf.&lt;/b&gt;
&lt;p&gt;Your code will still compile and work if 
        Assert.IsInstanceOfType is used but you will get compiler 
        warnings.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;NUnit.Framework.SyntaxHelpers namespace no longer exists.&lt;/b&gt;
&lt;p&gt;All classes that were in this namespace have been moved to 
        the NUnit.Framework namespace.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;The Has.Count constraint no longer takes an integer 
        parameter.&lt;/b&gt;
&lt;p&gt;To fix this problem replace code such as:&lt;/p&gt;
&lt;pre&gt;Assert.That(classesCollection, Has.Count(1));&lt;/pre&gt;
&lt;p&gt;With the following:&lt;/p&gt;
&lt;pre&gt;Assert.That(classesCollection.Has.Count.EqualTo(1));&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Overriding a [TestFixtureSetUp] method in a derived class 
        using the new keyword no longer works.&lt;/b&gt;
&lt;p&gt;Some of the SharpDevelop unit tests were overriding an 
        abstract base test class [TestFixtureSetUp] method in a derived 
        class by using the new keyword, as shown below.&lt;/p&gt;
&lt;p&gt;Base class:&lt;/p&gt;
&lt;pre&gt;[TestFixtureSetUp] &lt;br /&gt;public void SetUpFixture()  &lt;br /&gt;{ &lt;br /&gt;    // Setup code. &lt;br /&gt;}&lt;/pre&gt;
&lt;p&gt;Derived class:&lt;/p&gt;
&lt;pre&gt;[TestFixtureSetUp] &lt;br /&gt;public new void SetUpFixture()  &lt;br /&gt;{     &lt;br /&gt;    // Extra setup code. &lt;br /&gt;    base.SetUpFixture(); &lt;br /&gt;}&lt;/pre&gt;
&lt;p&gt;In NUnit 2.4.8 the SetUpFixture method in the derived class 
        would be called when running the tests allowing it to execute 
        some extra setup steps. In NUnit 2.5 the base class 
        SetUpFixture method is called instead and the derived class 
        method is never called. To resolve the problem we changed the 
        base class so it used a virtual method and allowed the derived 
        class to override this to execute its extra setup steps.&lt;/p&gt;
&lt;p&gt;Base class:&lt;/p&gt;
&lt;pre&gt;[TestFixtureSetUp] &lt;br /&gt;public void SetUpFixture()  &lt;br /&gt;{ &lt;br /&gt;    BeforeSetUpFixture(); &lt;br /&gt;    // Setup code. &lt;br /&gt;} &lt;br /&gt; &lt;br /&gt;public virtual void BeforeSetUpFixture() &lt;br /&gt;{ &lt;br /&gt;}&lt;/pre&gt;
&lt;p&gt;Derived class:&lt;/p&gt;
&lt;pre&gt;public override void BeforeSetUpFixture() &lt;br /&gt;{ &lt;br /&gt;     // Extra setup code. &lt;br /&gt;}&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;img src="http://community.sharpdevelop.net/aggbug.aspx?PostID=26381" width="1" height="1"&gt;</description><category domain="http://community.sharpdevelop.net/blogs/mattward/archive/tags/UnitTests/default.aspx">UnitTests</category></item><item><title>Accepted GSoC students</title><link>http://community.sharpdevelop.net/blogs/dsrbecky/archive/2009/04/24/accepted-gsoc-students.aspx</link><pubDate>Fri, 24 Apr 2009 16:11:00 GMT</pubDate><guid isPermaLink="false">1b90d1c1-04e6-45b0-b51d-b665527d49b9:26166</guid><dc:creator>DavidSrbecky</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;These projects have been accepted into SharpDevelop. You can learn more about each project by visiting the links below.&lt;/p&gt;

&lt;table&gt;


&lt;tr align="left"&gt;
  &lt;th align="right"&gt;Student&lt;/th&gt;
  &lt;th&gt;Title&lt;/th&gt;
  &lt;th&gt;Mentor&lt;/th&gt;
&lt;/tr&gt;

      
&lt;tr&gt;
  &lt;td align="right"&gt;&lt;a href="http://socghop.appspot.com/student_project/show/google/gsoc2009/sharpdevelop/t124024869351"&gt;Siegfried Pammer&lt;/a&gt;&lt;/td&gt;
  &lt;td&gt;XAML code completion for SharpDevelop&lt;/td&gt;
  &lt;td&gt;Bernhard Spuida&lt;/td&gt;
&lt;/tr&gt;

      
&lt;tr&gt;
  &lt;td align="right"&gt;&lt;a href="http://socghop.appspot.com/student_project/show/google/gsoc2009/sharpdevelop/t124024869810"&gt;Philipp Maihart&lt;/a&gt;&lt;/td&gt;
  &lt;td&gt;Application &amp;quot;Database Tools Add-In&amp;quot;&lt;/td&gt;
  &lt;td&gt;Peter Forstmeier&lt;/td&gt;
&lt;/tr&gt;

      
&lt;tr&gt;
  &lt;td align="right"&gt;&lt;a href="http://socghop.appspot.com/student_project/show/google/gsoc2009/sharpdevelop/t124024870142"&gt;Martin Konicek&lt;/a&gt;&lt;/td&gt;
  &lt;td&gt;Debugger visualizer for SharpDevelop&lt;/td&gt;
  &lt;td&gt;David Srbecky&lt;/td&gt;
&lt;/tr&gt;

      
&lt;tr&gt;
  &lt;td align="right"&gt;&lt;a href="http://socghop.appspot.com/student_project/show/google/gsoc2009/sharpdevelop/t124024870746"&gt;Sergej Andrejev&lt;/a&gt;&lt;/td&gt;
  &lt;td&gt;Common keyboard shortcuts handling and management in SharpDevelop&lt;/td&gt;
  &lt;td&gt;Matt Ward&lt;/td&gt;
&lt;/tr&gt;

      
&lt;tr&gt;
  &lt;td align="right"&gt;&lt;a href="http://socghop.appspot.com/student_project/show/google/gsoc2009/sharpdevelop/t124024871345"&gt;Tomasz Tretkowski&lt;/a&gt;&lt;/td&gt;
  &lt;td&gt;Integration of C++/CLI&lt;/td&gt;
  &lt;td&gt;Daniel Grunwald&lt;/td&gt;
&lt;/tr&gt;


&lt;/table&gt;

&lt;p&gt;&lt;br /&gt;Our goals for GSoC 2009 are simple:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;provide students with a learning experience in advanced .net application programming&lt;/li&gt;
&lt;li&gt;motivate students to become long term contributors&lt;/li&gt;
&lt;li&gt;improve SharpDevelop in code areas the core team does not have time to work on currently&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We look forward to having a great experience with all involved.&lt;/p&gt;
&lt;p&gt;And don&amp;#39;t worry, even if you were not selected for one of the slots available, we value your efforts and thoughts. If you want to contribute to SharpDevelop nevertheless, you are welcome and also will receive our support. Of course, there won&amp;#39;t be money involved, but if you enjoy coding as much as we do, we will be glad to help and mentor you - just drop us a line to let us know and we will be there for you. If you don&amp;#39;t, we look forward to seeing you around again in the next GSoC.&lt;/p&gt;
&lt;p&gt;Thanks for all your applications and great project proposals. It is wonderful for us to see what you are thinking and planning.&lt;/p&gt;&lt;img src="http://community.sharpdevelop.net/aggbug.aspx?PostID=26166" width="1" height="1"&gt;</description><category domain="http://community.sharpdevelop.net/blogs/dsrbecky/archive/tags/GSoC/default.aspx">GSoC</category></item><item><title>Merging of Calls – Pinpointing Interesting Methods</title><link>http://community.sharpdevelop.net/blogs/siegfried_pammer/archive/2009/04/13/merging-of-calls-pinpointing-interesting-methods.aspx</link><pubDate>Mon, 13 Apr 2009 12:20:00 GMT</pubDate><guid isPermaLink="false">1b90d1c1-04e6-45b0-b51d-b665527d49b9:26087</guid><dc:creator>siegi44</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;As mentioned in the previous post, SharpDevelop 3.1 will contain a built-in profiler.&lt;br /&gt;&lt;br /&gt;Today we&amp;#39;ll talk about what data the profiler collects, and what exactly &amp;quot;merging&amp;quot; is.&lt;br /&gt;&lt;br /&gt;We’ll use the following sample program for exploring the topic:&lt;br /&gt;&lt;br /&gt;using System;&lt;br /&gt;using System.Threading;&lt;br /&gt;&lt;br /&gt;namespace ICSharpCode.Profiler.Example1&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; class Program&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; static void DoCalculation(bool doLotsOfWork) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (doLotsOfWork) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; int target = Environment.TickCount + 1000;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; while (Environment.TickCount &amp;lt; target) { }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Thread.Sleep(100);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; static void SomeMethod() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; DoCalculation(true);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; static void SomeOtherMethod() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i = 0; i &amp;lt; 10; i++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; DoCalculation(false);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; static void Main() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; SomeMethod();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; SomeOtherMethod();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;SomeMethod and SomeOtherMethod take the same amount of time, but for different reasons.&lt;br /&gt;&lt;br /&gt;If we simply store timing information per method, it would seem that DoCalculation spends 50% of the time in get_TickCount and 50% in Thread.Sleep.&lt;br /&gt;&lt;br /&gt;But a good profiler should be able to show that only the invocations of SomeMethod spend their time in get_TickCount, whereas SomeOtherMethod ends up spending time in Thread.Sleep.&lt;br /&gt;&lt;br /&gt;Or, assume you have a program with a textbox and a button. You click on the button, then change the text (input to the program) and then run the button code again. The other input might mean that the performance characteristics of the button method change dramatically - so ideally, we should be able to view each click separately.&lt;br /&gt;&lt;br /&gt;What data does the profiler have to collect to do this? The easiest solution would be to record all function calls. For each function call, store the function ID, the call start time, and the call end time.&lt;br /&gt;&lt;br /&gt;That way, we don&amp;#39;t lose any data; we can reconstruct the application&amp;#39;s stack at every point in time.&lt;br /&gt;Of course, if you are looking into a performance issue, you don&amp;#39;t want to look at individual stack traces - you want a little more overview. Or expressed for our textbox/button example: It is nice to be able to separately view the data for each button click; but initially, you&amp;#39;ll want to look at all data at once.&lt;br /&gt;&lt;br /&gt;Now we get to our data model: when you&amp;#39;re using the SharpDevelop profiler, you&amp;#39;re dealing with &amp;quot;merged&amp;quot; sets of individual calls. Instead of seeing a single call stack, you&amp;#39;ll see the tree of all call stacks.&lt;br /&gt;&lt;br /&gt;For our example code, this looks like in the following screenshot:&lt;/p&gt;&lt;p&gt;&lt;img src="http://community.sharpdevelop.net/blogs/siegfried_pammer/profiler/post2/screen1.png" alt="" width="" align="" border="" height="" hspace="" /&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;Note that the ten calls to DoCalculation inside SomeOtherMethod were merged into a single node in the tree view (a &amp;quot;merged&amp;quot; call). In this view, you are not able to view an individual call&amp;#39;s timing data, only the sum of all individual times. However, the DoCalculation call inside SomeMethod and that in SomeOtherMethod are still separate, as these have different call stacks.&lt;br /&gt;&lt;br /&gt;If you want to view them together, select both calls and use Right Click &amp;gt; Merge.&lt;br /&gt;&lt;br /&gt;A new tree will open with all 11 calls merged together:&lt;/p&gt;&lt;p&gt;&lt;img src="http://community.sharpdevelop.net/blogs/siegfried_pammer/profiler/post2/screen2.png" alt="" width="" align="" border="" height="" hspace="" /&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;No matter whether we&amp;#39;re dealing with multiple calls after each other, or with calls in different positions in the tree, it&amp;#39;s always the same operation: merging. You can even merge calls of different functions together - though unless the functions do similar things, you won&amp;#39;t get useful results.&lt;br /&gt;&lt;br /&gt;For example, here you can see SomeMethod and SomeOtherMethod merged together:&lt;/p&gt;&lt;p&gt;&lt;img src="http://community.sharpdevelop.net/blogs/siegfried_pammer/profiler/post2/screen3.png" alt="" width="" align="" border="" height="" hspace="" /&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;Note that merging functions also merges their children (grouped by function name).&lt;/p&gt;&lt;p&gt;Now it&amp;#39;s pretty clear what the timeline control above does: the profiler takes all root nodes from all stack traces in the selected time span, and merges nodes belonging to the same thread.&lt;/p&gt;&lt;p&gt;However, naïvely storing every function call individually takes a lot of space - &lt;b&gt;about 7 GB (!)&lt;/b&gt; for SharpDevelop starting and opening its own solution (SharpDevelop.sln). That&amp;#39;s why the profiler limits you to selecting start and end positions for the time spans with a granularity of about 500ms: during profiling, the profiler hook merges the calls into data sets of about 500ms.&lt;/p&gt;&lt;p&gt;We never actually create the &amp;quot;function start,end&amp;quot;-entries proposed above, but directly build a merged representation as the profiler runs. That way we dramatically reduce the size of the profiler output: &lt;b&gt;only 198 MB&lt;/b&gt; for SharpDevelop starting and opening its own solution.&lt;/p&gt;&lt;p&gt;In the next post we will give you a brief overview of all the other commands you can access in the context menu of each call and how to use them.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;img src="http://community.sharpdevelop.net/aggbug.aspx?PostID=26087" width="1" height="1"&gt;</description><category domain="http://community.sharpdevelop.net/blogs/siegfried_pammer/archive/tags/Profiler/default.aspx">Profiler</category></item><item><title>Introducing a New Tool in SharpDevelop – The Profiler</title><link>http://community.sharpdevelop.net/blogs/siegfried_pammer/archive/2009/04/04/introducing-a-new-tool-in-sharpdevelop-the-profiler.aspx</link><pubDate>Sat, 04 Apr 2009 16:43:00 GMT</pubDate><guid isPermaLink="false">1b90d1c1-04e6-45b0-b51d-b665527d49b9:25997</guid><dc:creator>siegi44</dc:creator><slash:comments>0</slash:comments><description>Nearly one year ago, we started building a new tool for SharpDevelop: a profiler. It will make
it easier to analyze and improve the performance of applications developed
using SharpDevelop. In the next few weeks we are going to give you an overview
of all the different aspects of the profiler, its usage and we will shed some
light on its implementation and technical details.
&lt;h2&gt;Using the Profiler&lt;/h2&gt;
&lt;p&gt;To start a new profiler session just go to “Quality Tools” &amp;gt; “Profiler” and then you
can decide whether to profile the currently opened project or you can select a
program to run.&lt;/p&gt;&lt;p&gt;&lt;img src="http://community.sharpdevelop.net/blogs/siegfried_pammer/profiler/post1/menu.png" alt="" width="533" align="" border="" height="130" hspace="" /&gt; &lt;br /&gt;&lt;/p&gt;
&lt;p&gt;During execution of the application, performance data is collected. On program end,
SharpDevelop will automatically open up the session and display the collected
data.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img src="http://community.sharpdevelop.net/blogs/siegfried_pammer/profiler/post1/view.png" alt="" width="865" align="" border="" height="491" hspace="" /&gt;&lt;/p&gt;

&lt;p&gt;In the “Overview” tab, all threads and all calls are listed. In the “Top 20” tab 20 methods, in which most time is spent during run time, are listed. On the right side you can see
the ring diagram. The concept of the ring diagram was taken from the Ubuntu “Disk
Usage Analyzer”. It can be used to easily navigate to deep levels of the call
tree. Just click on a call to move there. If you want to go back to the call
you had selected before, just click inside the gray circle in the middle.&lt;/p&gt;

&lt;p&gt;To show details on a call in the ring diagram simply move the mouse over it and a tool
tip with important information will be displayed. The gray circle represents
the call currently selected in the tree view. The innermost ring is a pie chart
showing the children of the selected call. The size of each piece is
proportional to the time spent inside that call. The other rings represent the
deeper levels of the call tree.&lt;/p&gt;

&lt;p&gt;In the next post we will show you the “merge” feature, which allows you to view multiple
parts of the call tree at once. The “merge” feature is used by the “Top 20” tab
and the timeline too.&lt;/p&gt;&lt;img src="http://community.sharpdevelop.net/aggbug.aspx?PostID=25997" width="1" height="1"&gt;</description><category domain="http://community.sharpdevelop.net/blogs/siegfried_pammer/archive/tags/Profiler/default.aspx">Profiler</category></item><item><title>GSOC proposals</title><link>http://community.sharpdevelop.net/blogs/laputa/archive/2009/04/04/gsoc-proposals.aspx</link><pubDate>Sat, 04 Apr 2009 00:16:03 GMT</pubDate><guid isPermaLink="false">1b90d1c1-04e6-45b0-b51d-b665527d49b9:25999</guid><dc:creator>Laputa</dc:creator><slash:comments>0</slash:comments><description>The time to send in proposals for Google Summer Of Code is over now. Now we&amp;#39;re busy reading your proposals and trying to decide on a ranking. This is a lot more work than I initially expected - we got lots of proposals during the last three days. Unfortunately, most of the late proposals were of a rather low quality. In total, we got 44 proposals from 34 students - much more than I expected. Here&amp;#39;s the list of topics proposals were written on. As you can see, most of them come straight from...(&lt;a href="http://community.sharpdevelop.net/blogs/laputa/archive/2009/04/04/gsoc-proposals.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://community.sharpdevelop.net/aggbug.aspx?PostID=25999" width="1" height="1"&gt;</description><category domain="http://community.sharpdevelop.net/blogs/laputa/archive/tags/Daniel/default.aspx">Daniel</category></item><item><title>Subversion 1.6</title><link>http://community.sharpdevelop.net/blogs/laputa/archive/2009/04/03/subversion-1-6.aspx</link><pubDate>Fri, 03 Apr 2009 20:20:24 GMT</pubDate><guid isPermaLink="false">1b90d1c1-04e6-45b0-b51d-b665527d49b9:25990</guid><dc:creator>Laputa</dc:creator><slash:comments>0</slash:comments><description>In SharpDevelop 3.1.0.3948, I changed our Subversion integration to use SharpSVN instead of SvnDotNet . SharpSVN exposes more Subversion APIs to managed code, which could result in some nice features in the (far) future - for example, &amp;quot;SVN Diff&amp;quot; right inside the text editor. But the main reason for the upgrade was that SharpSVN supports Subversion 1.6. If you are using TortoiseSVN 1.6, you need to update to SharpDevelop 3.1 . The old SvnDotNet does not work with new working copies. However...(&lt;a href="http://community.sharpdevelop.net/blogs/laputa/archive/2009/04/03/subversion-1-6.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://community.sharpdevelop.net/aggbug.aspx?PostID=25990" width="1" height="1"&gt;</description><category domain="http://community.sharpdevelop.net/blogs/laputa/archive/tags/Daniel/default.aspx">Daniel</category></item><item><title>GSoC 2009</title><link>http://community.sharpdevelop.net/blogs/laputa/archive/2009/03/24/gsoc-2009.aspx</link><pubDate>Tue, 24 Mar 2009 13:42:01 GMT</pubDate><guid isPermaLink="false">1b90d1c1-04e6-45b0-b51d-b665527d49b9:25766</guid><dc:creator>Laputa</dc:creator><slash:comments>0</slash:comments><description>David wrote a blog post on our participation in the GSoC 2009 . It refers to the GSoC 2009 Wiki entry where the mentors have posted a few ideas (yes, we actively encourage students to come up with their own!). As I am the program manager, I am not active as a mentor, but I sure do have an opinion... here are my top five projects when it comes to &amp;quot;visibility&amp;quot; (a feature that will be used by a large percentage of our user base): The database scout / database api / EDM designer (we already...(&lt;a href="http://community.sharpdevelop.net/blogs/laputa/archive/2009/03/24/gsoc-2009.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://community.sharpdevelop.net/aggbug.aspx?PostID=25766" width="1" height="1"&gt;</description><category domain="http://community.sharpdevelop.net/blogs/laputa/archive/tags/Chris/default.aspx">Chris</category></item><item><title>SharpDevelop and the Google Summer of Code 2009</title><link>http://community.sharpdevelop.net/blogs/dsrbecky/archive/2009/03/24/gsoc2009.aspx</link><pubDate>Tue, 24 Mar 2009 02:09:00 GMT</pubDate><guid isPermaLink="false">1b90d1c1-04e6-45b0-b51d-b665527d49b9:25755</guid><dc:creator>DavidSrbecky</dc:creator><slash:comments>10</slash:comments><description>&lt;p&gt;&lt;a href="http://www.icsharpcode.net/OpenSource/SD/" target="_blank"&gt;SharpDevelop&lt;/a&gt; is participating in the &lt;a href="http://code.google.com/soc/"&gt;Google Summer of Code&lt;/a&gt; this year. &lt;/p&gt;&lt;p&gt;It is an opportunity for students to earn &lt;b&gt;4500 USD&lt;/b&gt; over the summer by working on an open-source project.&lt;/p&gt;&lt;p&gt;We have created a list of ideas, but you can work basically on anything you want as long as it is relevant to SharpDevelop.&amp;nbsp; You can find the list of ideas and any further information on the &lt;a href="http://wiki.sharpdevelop.net/gsoc.ashx"&gt;SharpDevelop wiki page for the Google Summer of Code&lt;/a&gt;.&amp;nbsp; You can &lt;a href="http://socghop.appspot.com/student/apply/google/gsoc2009"&gt;submit your application here&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;If you are not a student or if you do not have enough spare time, you can benefit as well.... share your ideas with us and maybe some student will pick them up and implement them.&lt;/p&gt;&lt;p&gt;Feel free to contact us on the &lt;a href="http://community.sharpdevelop.net/forums/"&gt;forums&lt;/a&gt; or via &lt;a href="mailto:gsoc@icsharpcode.net"&gt;email&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;Please spread the word and tell your friends about the Summer of Code... &lt;br /&gt;&lt;/p&gt;&lt;img src="http://community.sharpdevelop.net/aggbug.aspx?PostID=25755" width="1" height="1"&gt;</description><category domain="http://community.sharpdevelop.net/blogs/dsrbecky/archive/tags/Mono/default.aspx">Mono</category><category domain="http://community.sharpdevelop.net/blogs/dsrbecky/archive/tags/GSoC/default.aspx">GSoC</category></item><item><title>Using the Python Standard Library</title><link>http://community.sharpdevelop.net/blogs/mattward/archive/2009/03/01/UsingPythonStandardLibrary.aspx</link><pubDate>Sun, 01 Mar 2009 14:43:00 GMT</pubDate><guid isPermaLink="false">1b90d1c1-04e6-45b0-b51d-b665527d49b9:25410</guid><dc:creator>MattWard</dc:creator><slash:comments>2</slash:comments><description>&lt;p&gt;Here is a short walkthrough on how to use the 
    &lt;a href="http://docs.python.org/library/"&gt;Python Standard 
    Library&lt;/a&gt; with 
    &lt;a href="http://www.sharpdevelop.net/OpenSource/SD/Download/"&gt;
    SharpDevelop 3.0&lt;/a&gt; and IronPython 2.0.&lt;/p&gt;&lt;h2&gt;Prerequisites&lt;/h2&gt;&lt;p&gt;You will need to have SharpDevelop 3.0 and Python 2.5 installed 
    on your machine. These can be downloaded from the following 
    locations.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.sharpdevelop.net/OpenSource/SD/Download/#SharpDevelop30"&gt;SharpDevelop 
      3.0&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.python.org/download/releases/2.5.4/"&gt;Python 
      2.5&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Note that using Python 2.6 is not supported. The following 
    section assumes that Python 2.5 was installed into the C:\Python25 
    folder.&lt;/p&gt;&lt;h2&gt;Using the Python Standard Library&lt;/h2&gt;&lt;p&gt;First we will create an IronPython console application in 
    SharpDevelop. From the &lt;b&gt;File&lt;/b&gt; menu select &lt;b&gt;New&lt;/b&gt; and then 
    &lt;b&gt;Solution&lt;/b&gt;. In the New Project window select the &lt;b&gt;Python&lt;/b&gt; 
    category and select the &lt;b&gt;Console Application&lt;/b&gt; template.&lt;/p&gt;&lt;p&gt;&lt;img src="http://community.sharpdevelop.net/photos/mattward/images/original/NewPythonConsoleProject.aspx" alt="New Python Console Application template" /&gt;&lt;/p&gt;&lt;p&gt;Give the project a name, select its location and click the 
    &lt;b&gt;Create&lt;/b&gt; button.&lt;/p&gt;&lt;p&gt;To use the Python Standard Library the project needs a reference 
    to IronPython.dll, which should be added by default, and a 
    reference to IronPython.Modules.dll. Open the &lt;b&gt;Projects&lt;/b&gt; 
    window, if it is not already open, by selecting &lt;b&gt;Projects&lt;/b&gt; 
    from the &lt;b&gt;View&lt;/b&gt; menu. Right click the project&amp;#39;s 
    references and select &lt;b&gt;Add Reference&lt;/b&gt;. In the &lt;b&gt;Add 
    Reference&lt;/b&gt; dialog first add a reference to &lt;b&gt;mscorlib&lt;/b&gt;, this 
    reference is needed since we are going to use the 
    System.Console class to pause the console output. Then select the 
    &lt;b&gt;.NET Assembly Browser&lt;/b&gt; tab and click the &lt;b&gt;Browse&lt;/b&gt; 
    button. Locate the IronPython.Modules.dll file and select it. This 
    file should be in the following folder:&lt;/p&gt;&lt;p&gt;C:\Program 
    Files\SharpDevelop\3.0\AddIns\AddIns\BackendBindings\PythonBinding&lt;/p&gt;&lt;p&gt;Click OK to close the Add Reference dialog.&lt;/p&gt;&lt;p&gt;In the Program.py file change the code to the following:&lt;/p&gt;&lt;pre&gt;# Add Python Standard Library to search path. &lt;br /&gt;import sys &lt;br /&gt;sys.path.append(&amp;quot;c:\python25\lib&amp;quot;) &lt;br /&gt; &lt;br /&gt;# Use Python Standard Library os module. &lt;br /&gt;import os &lt;br /&gt;print os.getcwd() &lt;br /&gt; &lt;br /&gt;# Wait for a key press before closing the console window. &lt;br /&gt;import System &lt;br /&gt;print &amp;quot;Press any key to continue...&amp;quot; &lt;br /&gt;System.Console.ReadKey(True) &lt;/pre&gt;&lt;p&gt;The sys.path.append line adds the Python Standard Library to the 
    search path. After that the os module is imported and the os.getcwd 
    method is called to get the current working directory and this is 
    output to the console window. The last three lines of code are just 
    used to pause the console window so we can see the output.&lt;/p&gt;&lt;p&gt;Compile the above code by selecting &lt;b&gt;Build Solution&lt;/b&gt; from 
    the &lt;b&gt;Build&lt;/b&gt; menu.&lt;/p&gt;&lt;p&gt;Finally run the application by selecting &lt;b&gt;Run&lt;/b&gt; from the 
    &lt;b&gt;Debug&lt;/b&gt; menu.&lt;/p&gt;&lt;p&gt;&lt;img src="http://community.sharpdevelop.net/photos/mattward/images/original/PythonConsoleAppOutputWindow.aspx" alt="Output from Python Console application." /&gt;&lt;/p&gt;&lt;img src="http://community.sharpdevelop.net/aggbug.aspx?PostID=25410" width="1" height="1"&gt;</description><category domain="http://community.sharpdevelop.net/blogs/mattward/archive/tags/Python/default.aspx">Python</category></item><item><title>SharpDevelop 3.0 Final</title><link>http://community.sharpdevelop.net/blogs/laputa/archive/2009/02/10/sharpdevelop-3-0-final.aspx</link><pubDate>Tue, 10 Feb 2009 08:48:17 GMT</pubDate><guid isPermaLink="false">1b90d1c1-04e6-45b0-b51d-b665527d49b9:25056</guid><dc:creator>Laputa</dc:creator><slash:comments>0</slash:comments><description>Another major release of SharpDevelop finally hits the streets - version 3.0 has been completed yesterday and is available for download as of now! Go get it...(&lt;a href="http://community.sharpdevelop.net/blogs/laputa/archive/2009/02/10/sharpdevelop-3-0-final.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://community.sharpdevelop.net/aggbug.aspx?PostID=25056" width="1" height="1"&gt;</description><category domain="http://community.sharpdevelop.net/blogs/laputa/archive/tags/Chris/default.aspx">Chris</category></item><item><title>WPF Designer Removed From SharpDevelop 3.0</title><link>http://community.sharpdevelop.net/blogs/laputa/archive/2008/12/14/wpf-designer-removed-from-sharpdevelop-3-0.aspx</link><pubDate>Sun, 14 Dec 2008 19:17:46 GMT</pubDate><guid isPermaLink="false">1b90d1c1-04e6-45b0-b51d-b665527d49b9:24428</guid><dc:creator>Laputa</dc:creator><slash:comments>0</slash:comments><description>On December 5th (revision 3655), we removed the WPF designer from SharpDevelop 3.0. The decision to remove this feature had its origins in an internal discussion between Daniel, Ivan and myself after watching the PDC 2008 session Microsoft .NET Framework: Declarative Programming Using XAML . There, System.Xaml.dll was announced - a parser for the full Xaml standard. Back then, a preview was announced for November, but that has been pushed back - please see the System.XAML CTP blog post by Rob Relyea...(&lt;a href="http://community.sharpdevelop.net/blogs/laputa/archive/2008/12/14/wpf-designer-removed-from-sharpdevelop-3-0.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://community.sharpdevelop.net/aggbug.aspx?PostID=24428" width="1" height="1"&gt;</description><category domain="http://community.sharpdevelop.net/blogs/laputa/archive/tags/Chris/default.aspx">Chris</category></item><item><title>NRefactory TypeReference - breaking change</title><link>http://community.sharpdevelop.net/blogs/laputa/archive/2008/12/06/nrefactory-typereference-breaking-change.aspx</link><pubDate>Sat, 06 Dec 2008 18:49:41 GMT</pubDate><guid isPermaLink="false">1b90d1c1-04e6-45b0-b51d-b665527d49b9:24345</guid><dc:creator>Laputa</dc:creator><slash:comments>0</slash:comments><description>In version 3.0.0.3660, I changed how NRefactory&amp;#39;s TypeReference.Type works. This is a potentially breaking change to users of NRefactory. Previously, TypeReference had both a &amp;quot; Type &amp;quot; and a &amp;quot; SystemType &amp;quot;. If you parsed &amp;quot; long a; &amp;quot;, you got a TypeReference with Type=&amp;quot; long &amp;quot; and SystemType=&amp;quot; System.Int64 &amp;quot;. However, this got a little problematic if you wanted to modify the AST - do you have to change both Type and SystemType ? Actually, setting...(&lt;a href="http://community.sharpdevelop.net/blogs/laputa/archive/2008/12/06/nrefactory-typereference-breaking-change.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://community.sharpdevelop.net/aggbug.aspx?PostID=24345" width="1" height="1"&gt;</description><category domain="http://community.sharpdevelop.net/blogs/laputa/archive/tags/Daniel/default.aspx">Daniel</category></item><item><title>WiX 3.0 AddIn for SharpDevelop 2.2</title><link>http://community.sharpdevelop.net/blogs/mattward/archive/2008/11/18/Wix3AddInForSharpDevelop2.aspx</link><pubDate>Tue, 18 Nov 2008 19:53:00 GMT</pubDate><guid isPermaLink="false">1b90d1c1-04e6-45b0-b51d-b665527d49b9:24167</guid><dc:creator>MattWard</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;If you want to use WiX 3.0 with SharpDevelop 2.2 now you can. 
    SharpDevelop 2.2 will still ship with WiX 2.0 support however the 
    WiX 3.0 addin has been backported. This WiX 3.0 
    addin for SharpDevelop 2.2 can be downloaded at the end of this 
    post. It was built and tested 
    using &lt;a href="http://wix.sourceforge.net/releases/3.0.4714.0/"&gt;WiX 
    3.0.4714&lt;/a&gt; which is the most recent release at the current time.&lt;/p&gt;&lt;h2&gt;Installing&lt;/h2&gt;&lt;p&gt;The simplest way to use the addin is as follows.&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Download the wix3-binaries.zip file from 
      &lt;a href="http://wix.sourceforge.net/releases/3.0.4714.0/"&gt;
      SourceForge&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;In SharpDevelop&amp;#39;s WiX addin folder 
      SharpDevelop\2.2\AddIns\AddIns\BackendBindings\WixBinding rename 
      the original &lt;b&gt;WixBinding.addin&lt;/b&gt; file to 
      WixBinding.addin-bak.&lt;/li&gt;&lt;li&gt;Copy the contents of the &lt;b&gt;bin&lt;/b&gt; folder in the 
      Wix3Binding.zip file to 
      SharpDevelop\2.2\AddIns\AddIns\BackendBindings\Wix3Binding.&lt;/li&gt;&lt;li&gt;Copy the contents of the &lt;b&gt;doc&lt;/b&gt; folder in the 
      wix3-binaries.zip file to the SharpDevelop\2.2\data\schemas 
      folder. This updates the WiX schemas for use in the XML 
      editor.&lt;/li&gt;&lt;li&gt;Rename the folder SharpDevelop\2.2\Tools\Wix to 
      SharpDevelop\2.2\Tools\Wix-bak&lt;/li&gt;&lt;li&gt;Copy the contents of the wix3-binaries.zip file to the 
      SharpDevelop\2.2\Tools\Wix folder.&lt;/li&gt;&lt;li&gt;Restart SharpDevelop.&lt;/li&gt;&lt;/ol&gt;&lt;h2&gt;Updating to Newer WiX Versions&lt;/h2&gt;&lt;ol&gt;&lt;li&gt;Download the wix3-binaries.zip file from wix.sf.net &lt;/li&gt;&lt;li&gt;Copy the contents of the wix-binaries.zip file to the folder 
      SharpDevelop\2.2\Tools\Wix.&lt;/li&gt;&lt;li&gt;Copy the contents of the doc folder to the 
      SharpDevelop\2.2\data\schemas folder.&lt;/li&gt;&lt;li&gt;If there are any problems try re-compiling the source code 
      and check the unit tests still work.&lt;/li&gt;&lt;/ol&gt;&lt;h2&gt;Compiling the Source Code&lt;/h2&gt;&lt;ol&gt;&lt;li&gt;Copy the contents of the Wix3Binding zip file into the folder 
      SharpDevelop\2.2\src\AddIns\BackendBindings\Wix3Binding.&lt;/li&gt;&lt;li&gt;Run msbuild WixBinding.sln.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;a href="http://community.sharpdevelop.net/blogs/mattward/Wix/Wix3Binding.zip"&gt;Download 
    Wix3Binding.zip&lt;/a&gt;&lt;/p&gt;&lt;img src="http://community.sharpdevelop.net/aggbug.aspx?PostID=24167" width="1" height="1"&gt;</description><category domain="http://community.sharpdevelop.net/blogs/mattward/archive/tags/WiX/default.aspx">WiX</category></item><item><title>Windows.Forms Designer Project Resource Support</title><link>http://community.sharpdevelop.net/blogs/christianhornung/archive/2008/09/10/windows-forms-designer-project-resource-support.aspx</link><pubDate>Wed, 10 Sep 2008 18:55:00 GMT</pubDate><guid isPermaLink="false">1b90d1c1-04e6-45b0-b51d-b665527d49b9:23410</guid><dc:creator>Christian Hornung</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;As of SharpDevelop 3.0 build 3534, the integrated Windows.Forms designer supports project resources for images and icons. Especially, this means that &lt;b&gt;forms generated by Visual Studio that use such resources can now be loaded and modified in SharpDevelop&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;In earlier versions of SharpDevelop, when adding an image or icon to a control the only possibility was to import an image file which was then stored in the resource file of the form. This also meant that an image was often stored in the resources multiple times, for every single control where it was used.&lt;/p&gt;&lt;p&gt;In the new build, you will now see the following dialog when you click on the dots to edit an image property of a control:&lt;/p&gt;&lt;p&gt;&lt;a href="http://community.sharpdevelop.net/photos/christianhornung/picture23409.aspx" target="_blank"&gt;&lt;img src="http://community.sharpdevelop.net/photos/christianhornung/images/23409/original.aspx" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The &amp;quot;local resource&amp;quot; option in combination with the &amp;quot;Import&amp;quot; button lets you do what the earlier versions did: Import a file and store it in the resources of the form.&lt;/p&gt;&lt;p&gt;The new &amp;quot;project resource&amp;quot; option, however, lets you choose a suitable image resource from &lt;i&gt;any&lt;/i&gt; resource file in the current project that does not already belong to a form. This way, resources can be reused and maintained more efficiently.&lt;/p&gt;&lt;p&gt;Adding this feature required a lot of complex coding, including creating custom code serializers and deserializers, and getting this right is sometimes more like a game of pure chance, because the internals of the forms designer in the .NET framework are documented poorly. So, please feel free to test this feature thoroughly and report any problems in the forums.&lt;/p&gt;&lt;img src="http://community.sharpdevelop.net/aggbug.aspx?PostID=23410" width="1" height="1"&gt;</description><category domain="http://community.sharpdevelop.net/blogs/christianhornung/archive/tags/Forms+designer/default.aspx">Forms designer</category></item><item><title>Code Analysis improvements in SharpDevelop 3.0</title><link>http://community.sharpdevelop.net/blogs/laputa/archive/2008/09/06/code-analysis-improvements-in-sharpdevelop-3-0.aspx</link><pubDate>Sat, 06 Sep 2008 17:32:29 GMT</pubDate><guid isPermaLink="false">1b90d1c1-04e6-45b0-b51d-b665527d49b9:23349</guid><dc:creator>Laputa</dc:creator><slash:comments>1</slash:comments><description>In revision 3506, SharpDevelop 3.0 got improved support for code analysis using FxCop 1.36. There were some bugs fixed that were related to the suppress message command - it was working only with FxCop 1.35, but even there couldn&amp;#39;t suppress messages for static constructors and explicitly implemented interface members. Using this command inserts a SuppressMessageAttribute in the code: A new feature is support for custom dictionaries for the FxCop spell checker. Instead of suppressing tons of spelling...(&lt;a href="http://community.sharpdevelop.net/blogs/laputa/archive/2008/09/06/code-analysis-improvements-in-sharpdevelop-3-0.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://community.sharpdevelop.net/aggbug.aspx?PostID=23349" width="1" height="1"&gt;</description><category domain="http://community.sharpdevelop.net/blogs/laputa/archive/tags/Daniel/default.aspx">Daniel</category></item><item><title>XAML code completion</title><link>http://community.sharpdevelop.net/blogs/laputa/archive/2008/09/05/xaml-code-completion.aspx</link><pubDate>Thu, 04 Sep 2008 23:04:00 GMT</pubDate><guid isPermaLink="false">1b90d1c1-04e6-45b0-b51d-b665527d49b9:23323</guid><dc:creator>Laputa</dc:creator><slash:comments>0</slash:comments><description>More than one year ago, I added the XAML language binding to SharpDevelop 3.0, showing tooltips in .xaml files and enabling refactoring. (&amp;quot; XAML and WPF support in SharpDevelop 3.0 &amp;quot;) Now I finally added the missing part: code completion. You get completion when typing an element: For attributes: And for attribute values if the property expects an enum:...(&lt;a href="http://community.sharpdevelop.net/blogs/laputa/archive/2008/09/05/xaml-code-completion.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://community.sharpdevelop.net/aggbug.aspx?PostID=23323" width="1" height="1"&gt;</description><category domain="http://community.sharpdevelop.net/blogs/laputa/archive/tags/Daniel/default.aspx">Daniel</category></item><item><title>First Mirador (SharpDevelop 4.0) Screenshot</title><link>http://community.sharpdevelop.net/blogs/laputa/archive/2008/09/04/first-mirador-sharpdevelop-4-0-screenshot.aspx</link><pubDate>Thu, 04 Sep 2008 17:57:06 GMT</pubDate><guid isPermaLink="false">1b90d1c1-04e6-45b0-b51d-b665527d49b9:23317</guid><dc:creator>Laputa</dc:creator><slash:comments>0</slash:comments><description>In case anyone gets a wrong idea, take a close look at the title bar - it has the word &amp;quot;experimental&amp;quot; in it: The reverse integration of the WPF branch is the first step in the direction of &amp;quot;more WPF&amp;quot; in SharpDevelop 4.0 (this screenshot shows the new WPF workbench and the new WPF start page). So what does this mean for the not-yet released version 3.0? As 3.0 is the last version built entirely on top of Windows Forms, it will be a long-term stable release series - meaning there...(&lt;a href="http://community.sharpdevelop.net/blogs/laputa/archive/2008/09/04/first-mirador-sharpdevelop-4-0-screenshot.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://community.sharpdevelop.net/aggbug.aspx?PostID=23317" width="1" height="1"&gt;</description><category domain="http://community.sharpdevelop.net/blogs/laputa/archive/tags/Chris/default.aspx">Chris</category></item><item><title>More Comprehensive Exception Reports for SharpDevelop</title><link>http://community.sharpdevelop.net/blogs/christianhornung/archive/2008/09/02/more-comprehensive-exception-reports-for-sharpdevelop.aspx</link><pubDate>Tue, 02 Sep 2008 19:20:00 GMT</pubDate><guid isPermaLink="false">1b90d1c1-04e6-45b0-b51d-b665527d49b9:23252</guid><dc:creator>Christian Hornung</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;First and foremost, we hope that you will not see the &amp;quot;unhandled exception&amp;quot; dialog box of SharpDevelop often. Nevertheless I would like to shed light on some improvements in that area.&lt;/p&gt;&lt;p&gt;In spite of all error reporting features of an application, the best thing users can do to help us is to describe as precisely as possible what they were doing that eventually led to the error. However, SharpDevelop 3 now also outputs some additional information that may help with fixing the bugs. As of build 3.0.0.3455, two extensions to the exception reports created by SharpDevelop are in place and working:&lt;/p&gt;&lt;p&gt;The &lt;b&gt;log message recorder&lt;/b&gt; permanently stores a number of internal log messages (currently up to 25) in a cyclic buffer. Those messages are then added to the report whenever an unhandled exception occurs. Here you can see the exception box with some log messages scrolled into view:&lt;/p&gt;&lt;p&gt;&lt;a href="http://community.sharpdevelop.net/photos/christianhornung/picture23250.aspx" target="_blank"&gt;&lt;img src="http://community.sharpdevelop.net/photos/christianhornung/images/23250/original.aspx" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Additionally, some &lt;b&gt;state information&lt;/b&gt; is added to the report. Currently the following items are listed:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;installed 3rd party add-ins&lt;/li&gt;&lt;li&gt;type and name of the current project&lt;/li&gt;&lt;li&gt;name and some properties of the current solution&lt;/li&gt;&lt;li&gt;active view content&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Please note that the new exception reports can contain information which you might want to keep private.&lt;/b&gt; For example, names of projects, files, classes, methods etc. can appear in the log messages and state information, perhaps even parts of code that has been edited. If you are concerned about privacy, you should look through the generated report and check whether it contains anything you do not want to disclose before posting it. Feel free to anonymize it as necessary, but please make sure that you do not change the &amp;quot;meaning&amp;quot; of the report - i.e. if you change a name, change all occurrences of that name equally.&lt;br /&gt;&lt;img src="http://community.sharpdevelop.net/aggbug.aspx?PostID=23252" width="1" height="1"&gt;</description><category domain="http://community.sharpdevelop.net/blogs/christianhornung/archive/tags/Exception+reporting/default.aspx">Exception reporting</category></item><item><title>Patch-Sized Contributions Without JCA</title><link>http://community.sharpdevelop.net/blogs/laputa/archive/2008/09/01/patch-sized-contributions-without-jca.aspx</link><pubDate>Mon, 01 Sep 2008 17:12:32 GMT</pubDate><guid isPermaLink="false">1b90d1c1-04e6-45b0-b51d-b665527d49b9:23238</guid><dc:creator>Laputa</dc:creator><slash:comments>1</slash:comments><description>Our Wiki has a guideline on joining the team which outlines the process of submitting code to the project. As part of this year&amp;#39;s #develop developer days (#d^3) we decided on a change to the guideline: It is now possible to contribute &amp;quot;any-size&amp;quot; patches (be it a bug fix or feature enhancement) when those code pieces (your changes) are licensed under the BSD license . Why this change? We want to make it easier for the &amp;quot;accidential contributor&amp;quot; (ie someone who stumbled across...(&lt;a href="http://community.sharpdevelop.net/blogs/laputa/archive/2008/09/01/patch-sized-contributions-without-jca.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://community.sharpdevelop.net/aggbug.aspx?PostID=23238" width="1" height="1"&gt;</description><category domain="http://community.sharpdevelop.net/blogs/laputa/archive/tags/Chris/default.aspx">Chris</category></item><item><title>XML Editor Reuse</title><link>http://community.sharpdevelop.net/blogs/mattward/archive/2008/08/31/XmlEditorReuse.aspx</link><pubDate>Sun, 31 Aug 2008 14:00:00 GMT</pubDate><guid isPermaLink="false">1b90d1c1-04e6-45b0-b51d-b665527d49b9:23223</guid><dc:creator>MattWard</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;It is always good to see that someone else finds the code that 
    you have written useful enough to be reused in another application. 
    Here we take a look at where SharpDevelop&amp;#39;s XML Editor has 
    been reused. The XML Editor was originally added to SharpDevelop 
    1.0 back in April 2005.&lt;/p&gt;&lt;h2&gt;MonoDevelop&lt;/h2&gt;&lt;p&gt;Some time ago I ported SharpDevelop&amp;#39;s XML Editor so it 
    could be used from inside &lt;a href="http://www.monodevelop.com"&gt;
    MonoDevelop&lt;/a&gt;. Currently there is an 
    &lt;a href="http://md-xed.sourceforge.net/"&gt;addin available for 
    MonoDevelop 1.0&lt;/a&gt;. MonoDevelop 2.0 now ships with this XML Editor 
    after &lt;a href="http://mjhutchinson.com/"&gt;Michael Hutchinson&lt;/a&gt; 
    from Novell integrated it in March this year. I also believe that 
    it is being used to help provide at least some part of the 
    autocompletion for ASP.NET. It will be interesting to see how 
    Michael builds on and improves the XML Editor code.&lt;/p&gt;&lt;h2&gt;Kaxaml&lt;/h2&gt;&lt;p&gt;&lt;a href="http://www.kaxaml.com"&gt;Kaxaml&lt;/a&gt; is a lightweight XAML 
    Editor written by &lt;a href="http://www.notstatic.com"&gt;Robby 
    Ingebretsen&lt;/a&gt;. Kaxaml version 1.0 and 2.0 use a modified version 
    of SharpDevelop&amp;#39;s XML Editor. Robby has replaced the user 
    interface part so the autocompletion popup window now uses WPF. He 
    has also modified it so the autocompletion popup window behaves the 
    same as Visual Studio&amp;#39;s XML Editor. For example, SharpDevelop 
    automatically inserts the equals sign and double quotes an 
    attribute name is autocompleted whilst Visual Studio will 
    autocomplete just the attribute name and then automatically insert 
    the double quotes after the equals sign is typed in.&lt;/p&gt;&lt;h2&gt;Intellisense for Microsoft Expression Blend 2.5&lt;/h2&gt;&lt;p&gt;&lt;a href="http://blogs.telerik.com/StefanDobrev/Posts/08-08-04/IntelliSense_for_Expression_Blend.aspx"&gt;Stefan Dobrev&lt;/a&gt; has written an 
    &lt;a href="http://code.msdn.microsoft.com/BlendSense"&gt;addin to 
    provide XML autocompletion&lt;/a&gt; for the as yet unreleased Expression 
    Blend 2.5. This addin uses the XML Editor code from Kaxaml to 
    provide the autocompletion. Stefan has modified this code slightly 
    to add support for the Expression Blend&amp;#39;s code editor.&lt;/p&gt;&lt;img src="http://community.sharpdevelop.net/aggbug.aspx?PostID=23223" width="1" height="1"&gt;</description><category domain="http://community.sharpdevelop.net/blogs/mattward/archive/tags/XmlEditor/default.aspx">XmlEditor</category></item><item><title>New feature: Extract method</title><link>http://community.sharpdevelop.net/blogs/siegfried_pammer/archive/2008/08/25/new-feature-extract-method.aspx</link><pubDate>Mon, 25 Aug 2008 13:17:00 GMT</pubDate><guid isPermaLink="false">1b90d1c1-04e6-45b0-b51d-b665527d49b9:23166</guid><dc:creator>siegi44</dc:creator><slash:comments>2</slash:comments><description>&lt;p&gt;&amp;nbsp;In the upcoming SharpDevelop 3 there&amp;#39;s a new refactoring included: Extract method. With it you can easily split a method into two independent methods.&lt;/p&gt;&lt;p&gt;If you want to use it you first have to select the piece of code you want to extract:&lt;br /&gt;&lt;a href="http://community.sharpdevelop.net/blogs/siegfried_pammer/blogpost_refactoring1.JPG"&gt;&lt;img src="http://community.sharpdevelop.net/blogs/siegfried_pammer/blogpost_refactoring1.JPG" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Then just click on Refactor &amp;gt; Extract method in the main menu:&lt;a href="http://community.sharpdevelop.net/blogs/siegfried_pammer/blogpost_refactoring2.JPG"&gt;&lt;img src="http://community.sharpdevelop.net/blogs/siegfried_pammer/blogpost_refactoring2.JPG" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;The preview will pop up, here you can enter a name for the new method:&lt;/p&gt;&lt;p&gt;&lt;a href="http://community.sharpdevelop.net/blogs/siegfried_pammer/blogpost_refactoring3.JPG"&gt;&lt;img src="http://community.sharpdevelop.net/blogs/siegfried_pammer/blogpost_refactoring3.JPG" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;After entering a name click &amp;quot;OK&amp;quot; and here you can see the new method and the inserted call:&lt;a href="http://community.sharpdevelop.net/blogs/siegfried_pammer/blogpost_refactoring4.JPG"&gt;&lt;img src="http://community.sharpdevelop.net/blogs/siegfried_pammer/blogpost_refactoring4.JPG" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Of course you can undo the change, just press Ctrl+Z.&lt;/p&gt;&lt;p&gt;I hope you find this refactoring useful and I would be glad to receive any comments on this. &lt;/p&gt;&lt;img src="http://community.sharpdevelop.net/aggbug.aspx?PostID=23166" width="1" height="1"&gt;</description></item></channel></rss>