SharpDevelop Community

Get your problems solved!
Welcome to SharpDevelop Community Sign in | Join | Help
in Search

Christoph Wille

  • SharpDevelop 5 C# Tech Preview

    SharpDevelop 5 has been long in the making, with the bulk of the time being spent on the move to NRefactory 5 (more information). Today we finally have something to show - a C#-only tech preview of SharpDevelop 5. It is not polished, but it will give you an idea what cool things are now possible - code actions being the poster child of the new features coming.

    Download

    Build 2100 Setup
    Build 2100 Source Code

    Newer versions can be downloaded from the build server, expect more activity once SharpDevelop 4.3 has shipped.

    Features entirely not available

    • Languages other than C# (VB.NET, IronPython, IronRuby)
    • Windows Forms designer
    • XAML code completion
    • Profiler
    • Reporting (SharpDevelop Reports)

    Features with restricted functionality

    • NuGet: PowerShell is not yet available (console and PS scripts on install of a package).
    • WiX: dialog designer is not yet available.
    • ASP.NET MVC: Code completion and folding currently disabled for Razor and Web Forms (.aspx) files.
    • Debugger: The object graph visualizer doesn't support collections yet; performance issues for larger collections.
  • Installing SharpDevelop on Windows 8

    With Windows 8 released to MSDN and TechNet subscribers today, I thought it'd be a good idea to give a short guide for installing SharpDevelop on a blank Windows 8 installation - because it will fail with an error message (although the screenshot is for SharpDevelop 4.3, the same applies for 4.2):

    The easiest way to fix this is to install .NET 3.5 (used by lots of other applications / drivers, thus if you don't install SharpDevelop first thing on Windows 8, it might just install right away because somebody else auto-installed this dependency).

    You are looking for "Turn Windows features on or off" - this will open the "Windows Features" dialog on the desktop:

    Make sure to check ".NET Framework 3.5", click OK, let it connect to Windows Update and finish the installation. Once done, you can go back to installing SharpDevelop, as it now has all required dependencies!

    Note You can alternatively install just the VC++ 2008 SP1 runtime.

  • Import and Export of Highlighting Settings

    Yesterday, Siegfried put finishing touches on the import/export of color schemes in SharpDevelop. To give you an idea, let's take a look at the following screenshot:

    This is an imported color scheme from StudioStyl.es, more specifically http://studiostyl.es/schemes/son-of-obsidian-with-resharper.

    Now, how do you get one of those color schemes installed in SharpDevelop? You have to go to the Tools / Options dialog, Text Editor / Highlighting section:

    There you will find the "Import highlighting colors" button, that allows you to pick a highlighting definition - either one that was exported from SharpDevelop, or one that came from Visual Studio (as is the case with StudioStyl.es):

    Please do note that if you have existing customizations, the import will warn you that those will be reset (otherwise you might end up with very interesting intersections of color schemes).

    Speaking of interesting effects: if you compare the first screenshot with the first listing on the StudioStyl.es page, you will notice differences such as the type coloring or the constructor (eg line 15). The reason for this is that sometimes VS supports more options, other times it is SharpDevelop - thus there can't be a perfect mapping when you import from a VS settings file. You might need to make slight adjustments in SharpDevelop after the import to get a perfect look.

  • ILSpy 2.1 async/await Decompilation Support

     ILSpy 2.1 is available as of now - it supports async/await decompilation:

    ILSpy_Master_2.1.0.1603_RTW_Binaries.zip
    ILSpy_Master_2.1.0.1603_RTW_Source.zip

    A few weeks ago, Daniel blogged about the details of how decompiling async / await is implemented. If you are only interested in the results, see the below screenshot for a proof of decompilation working (on Windows 8 RP):

    As a reminder: next week on Friday we'll do a Webcast on ILSpy.

  • Webcast: SharpDevelop Q&A Saturday June 9th

    From June 7th to June 10th the SharpDevelop team met in Bad Ischl, Austria for their annual #develop developers days (#d^3). This year we did a virtual Q&A session, where we talked about roadmap, architecture, implementation and extensibility.

    The recording of the Webcast is available on YouTube: http://www.youtube.com/watch?v=5HaTYJ3AThQ

    From our end Daniel, David and myself took part, and as a special guest we had Mike Krüger from MonoDevelop.

    There are quite a few interesting tidbits, but we won't spoil it for you - make sure to watch the recording!

  • Webcast: ILSpy Q&A Friday June 8th

    From June 7th to June 10th the SharpDevelop team met in Bad Ischl, Austria for their annual #develop developers days (#d^3). This year we did a virtual Q&A session, where we talked about roadmap, architecture, implementation and extensibility.

    The recording of the Webcast is available on YouTube: http://www.youtube.com/watch?v=dO2BdIMckcY

    Notes on a few glitches: in the introduction I missed Daniel (sorry!), and there was one recording glitch - my machine is Windows 8 RP, and somehow it didn't record the window content of Internet Explorer 10 but used the default start screen. The link I was mentioning for ILSpy plugins is this one here (it then worked perfectly fine on Daniel's machine).

    At the end, David posed an interesting question: Would editing an assembly you are currently debugging in the ILSpy debugger be useful? Adding in general: we need your feedback for improving features as well as prioritizing which ones you need first. Please let us know!

  • Async Targeting Pack in SharpDevelop 4.2 (and later)

    Microsoft has released the Async Targeting Pack for Visual Studio 11, which is also available as a NuGet package - and thus available in SharpDevelop. What does this Targeting Pack do? It allows you to use the async / await constructs in your pre-.NET 4.5 application.

    Take the following application project:

    It comes up with a couple of errors that wouldn't show if I had been targeting .NET 4.5. So how to fix this? NuGet to the rescue:

    Search for the Microsoft.CompilerServices.AsyncTargetingPack from the Manage Packages dialog (don't forget to click Add!):

    Now your project will build and run nicely - note the new assembly reference (Microsoft.CompilerServices.AsyncTargetingPack.Net4) and NuGet configuration (packages.config):

    One important caveat though: You must have .NET 4.5 installed on your development machine and set the project to build using the C# 5.0 compiler!

  • ILSpy 2.0 Final

    Today, we released ILSpy 2.0 final to the Web:

    ILSpy_Master_2.0.0.1595_RTW_Binaries.zip
    ILSpy_Master_2.0.0.1595_RTW_Source.zip

    Daniel's Beta feature post still applies to the release version:

    • Assembly Lists
    • Support for decompiling Expression trees
    • Support for lifted operatores on nullables
    • Decompile to Visual Basic
    • Search for multiple strings separated by space (searching for "Assembly manager" in ILSpy.exe would find AssemblyListManager)
    • Clicking on a local variable will highlight all other occurrences of that variable
    • Ctrl+F can be used to search within the decompiled code view

    However, one thing changed for the binaries distribution: we do not include the debugger addin by default (it is part of the source download). The reason is that it is not stable enough - we´re improving the debugger in SharpDevelop and don´t have the resources to port those changes over to ILSpy just yet.

  • SharpDevelop Platform Roadmap

    We have waited till the Beta phase of .NET Framework 4.5 to finally decide on our platform story - what will be supported and what will be required.

    SharpDevelop 4.x

    It will continue to require .NET 4.0 as its runtime, but it will also run on .NET 4.5 (if you upgraded your machine). It supports (as compilation targets) 2.0 to 4.5 - if those frameworks are installed on your machine.

    We are currently wrapping up feature development for 4.2, and we have plans for a further feature release 4.3. After that, the current plans are for servicing releases that update dependencies and/or fix bugs. Given those plans, expect 4.x releases for at least a year to come.

    SharpDevelop 5 "Zimnitz"

    This has been in development for some time already, and you have seen "offsprings" like ILSpy or Code Quality Analysis in SharpDevelop 4.2 to "prove" that our new NRefactory (*) is up to the job. Given that all IDE services need to be adapted to the new infrastructure, we will also take advantage of features in .NET 4.5, thus upping the requirements of SharpDevelop.

    However, this means for a considerable part of our current user base to start planning for the future - because .NET 4.5 will likely not support XP (maybe not even Vista). Betas of SD5 will start showing up later this year.

    Although the requirements change, the support of frameworks stays the same. (you will only have to install a newer OS on your development machine, deployment is unaffected)

    * NRefactory 5 is developed together with the MonoDevelop team, and will support features such as semantic highlighting or more (sophisticated) refactorings.

  • Soon on Your Computer - SD 4.2 Beta 2

    With support for .NET 4.5, and yes, it does run on Windows 8 Consumer Preview too:

  • Decompilation of Object / Collection Initializers with ILSpy

    If you test a method like the following:

            static void TestWithUnusedVariables()
            {
                var x = new Demo()
                {
                    SomeProperty = "Hello World"
                };
     
                var y = new List<Demo>
                {
                    new Demo() {
                        SomeProperty = "nada"
                        },
                    new Demo()
                        {
                            SomeProperty = "nix"
                        }
                };
            }

    And decompile with ILSpy you might be thinking that object / collection intializers are not being detected:

    private static void TestWithUnusedVariables()
    {
        Demo demo = new Demo();
        demo.SomeProperty = "Hello World";
        List<Demo> list = new List<Demo>();
        list.Add(new Demo
        {
            SomeProperty = "nada"
        });
        list.Add(new Demo
        {
            SomeProperty = "nix"
        });
    }

    Well, you are right. The reason being that the compilers sees that my user variables are not being used, thus optimizing the code by only keeping the compiler-generated ones, thus making it impossible for us to correctly detect the initializer.

    However, if you use the variables

            static void TestWithUsedVariables()
            {
                var x = new Demo()
                {
                    SomeProperty = "Hello World"
                };
     
                var y = new List<Demo>
                {
                    new Demo() {
                        SomeProperty = "nada"
                        },
                    new Demo()
                        {
                            SomeProperty = "nix"
                        }
                };
     
                x.SomeProperty = "noch was";
                var z = y.Count();
            }

    ILSpy will correctly come up with proper decompiled code:

    private static void TestWithUsedVariables()
    {
        Demo x = new Demo
        {
            SomeProperty = "Hello World"
        };
        List<Demo> y = new List<Demo>
        {
            new Demo
            {
                SomeProperty = "nada"
            }, 
            new Demo
            {
                SomeProperty = "nix"
            }
        };
        x.SomeProperty = "noch was";
        int z = y.Count<Demo>();
    }

    In the sense of a "variable being used" the decompilation also works for variables only used to pass back a value:

            static Demo TestWithReturnValue()
            {
                return new Demo()
                    {
                        SomeProperty = "Hello World"
                    };
            }

    ILSpy output:

    private static Demo TestWithReturnValue()
    {
        return new Demo
        {
            SomeProperty = "Hello World"
        };
    }

    Bottom line: object and collection initializers are being properly decompiled if we can ascertain that it actually is one.

  • Code Completion Trimming in SharpDevelop 4.2

    As mentioned in the release notes for SharpDevelop 4.1, it doesn't display the correct code completion information if you have the .NET 4.5 preview bits on your machine too. Starting with revision 8111, SharpDevelop 4.2 now correctly trims the code completion to the target framework (available on the build server). Therefore, if you plan to work with 4.0 / 4.5 today, we recommend to switch to SharpDevelop 4.2.

  • #d^3 2011 Kickoff with a Presentation on NRefactory 5

    Today is the first full day of the 2011 SharpDevelop Developer Days (we had a social event yesterday evening). We kicked off our four day meeting with a presentation by Daniel on NRefactory 5:

    The deck is attached, however, expect us to talk more (and in detail) about NR5 once it is stable enough for general consumption (a goal we are trying very hard to get closer during our meeting).

    We have a great turnout this year, with nine team members in the TZ Bad Ischl this year. We are going to work on SharpDevelop 5 (NRefactory 5), the debugger, CQA addin and a few other interesting topics.

  • SharpDevelop 4.1 Beta

  • ILSpy 1.0 Has Landed

    We let the Beta simmer for about one and a half months to see what bugs would come up, which were necessary to fix for 1.0, and which could be postponed for 2.0. After fixing issues dogeared for 1.0, we finally built the 1.0 RTW release today - and without any further ado, here is the download link to ILSpy 1.0:

    http://sourceforge.net/projects/sharpdevelop/files/ILSpy/1.0/ILSpy_1.0.0.1000_Binaries.zip/download

    Features can be found on the ILSpy homepage, and I'd like to point out that we already progressed nicely with 2.0, with Siegfried having completed the initial implementation of decompilation to VB.NET (learn more).

     

More Posts Next page »
Powered by Community Server (Commercial Edition), by Telligent Systems
Don't contact us via this (fleischfalle@alphasierrapapa.com) email address.