26.04.2022 LiveSharp 2.0.35 and LiveSharp.Server 2.1.2

Make sure to update to the most recent server and package versions to take advantage of license-free LiveSharp

26.04.2022 LiveSharp goes free and open source

Due to Microsoft implementing their own hot reload in .NET 6, most of the paid LiveSharp customers unsubscribed. This means that I cannot support myself with LiveSharp subscriptions any longer. However, there are still many issues with the built-in hot reload, making it unusable in certain situations. That’s why I decided to open up LiveSharp and make it free for everyone.

My only wish with LiveSharp was to have a live (hot reload) development experience in .NET. With version 6 this has partly come to fruition. Hopefully, Microsoft gets their shit together and fixes many issues that prevent the current hot reload from being usable in bigger applications. Until then, LiveSharp can still be of use to some people including me.

If someone is interested in diving into LiveSharp code and fixing something, I’ll always be available to help on Gitter or Discord.

Also, I’m canceling all the active subscriptions so that people don’t get charged anymore.

Repository link: https://github.com/ionoy/LiveSharp

03.08.2021 NuGet package update 2.0.20

  • .net 6.0 support for Blazor apps

10.05.2021 LiveSharp 2.0.13 update

05.05.2021 LiveSharp 2.0.9 update

  • Fixes “InvalidProgramException” bug
  • Fixes “IlCompilationException” with “EventCallback” bug
  • Fixes “Method not found” bug
  • Fixes few other issues related to generic methods

05.05.2021 LiveSharp.Server 2.0.6

  • Fixes the missing CSS issue

28.04.2021 LiveSharp 2.0 release for both Server and NuGet packages

  • Generic method update support
  • Multiple concurrently running projects support
  • LiveSharp Server UI page is shown only once, when you run livesharp command, not on every application start
  • Lots of bug fixes and improvements

NB! Make sure you update LiveSharp.Server (`dotnet tool update LiveSharp.Server –global`) along with the NuGet package.

13.03.2021 NuGet package update 1.6.59

  • updated to the latest Roslyn compiler

This fixes a weird issue where project compilation hangs without any diagnostic messages.

09.03.2021 NuGet package update 1.6.58

  • Fixes `NullReferenceException` at `LiveSharpRuntime.Start` when `livesharp.dashboard.cs` is missing from the startup project

02.03.2021 NuGet package update 1.6.54

  • You can use `.livesharpignore` file to ignore specific files
  • Fix runtime issue with `init` properties
  • LiveSharp is now started by module initializer
  • When intercepting method calls with , you can now specify types that should be ignored.Example:
    `app.OnMethodCallIntercepted(typeof(INotifyPropertyChanged), “.ctor”, HandleCall, typeof(ContentPage));`This intercepts constructor calls to types inheriting from INPC, but not `ContentPage`.

09.02.2021 LiveSharp.Server update 1.7.2 hotfix

  • Fixes the issue in 1.7.1 where updates weren’t registered after the application restart

09.02.2021 LiveSharp.Server update 1.7.1

  • Preliminary multiple concurrently running projects support

21.01.2021 NuGet package update 1.6.52

  • Added a new IL compiler that will replace the old one based on Expression Tree for .NET Core projects. This will fix the majority of IL issues. Unfortunately, Mono still doesn’t support `DynamicILInfo` API, so Xamarin and Blazor WASM projects will not be affected by this change.
  • Fixed Xamarin startup crash that was introduced in the recent versions
  • Blazor update handler correctly handles disposed components now
  • Added “remove activation” button to the Dashboard. This allows developers to transfer their licenses to another computer.

NB! You will need to restart Visual Studio and do a full solution rebuild after the NuGet package update. Otherwise, you might encounter weird startup crashes.

04.01.2021 NuGet package update 1.6.45

  • Fixed file locking issue that was still present in the 1.6.45-beta

23.12.2020 NuGet package update 1.6.45-beta

  • Support for all the latest C# features, reference nullability included
  • Fixed file locking issue with LiveSharp Server
  • Added support for the command line update handlers. You can add a script in your project root directory named like `livesharphandler.{extension}.cmd` and it will be executed each time when resource with extension {extension} is updated in runtime. This might be useful for SASS/SCSS or other preprocessors.
  • Added powerful IL rewriter/interceptor module accessible from LiveSharp.dashboard.cs
  • Fixed issue when new installs didn’t enable Blazor update handler by default. NB! By the way, if your Blazor updates don’t reload controls automatically, make sure to add `app.UseDefaultBlazorHandler()` to LiveSharp.dashboard.cs / Configure
  • LiveSharp now works even with LiveSharp.dashboard.cs missing
  • Projects removed from the main solution will now be automatically deleted from cache and shouldn’t cause any runtime errors
  • Partial support for the whole assembly refresh. Currently is limited for adding Blazor component parameters in the main project.
  • Lots of smaller fixes and improvements

This is a big update that contains huge rewrites, that’s why I’m releasing it as a beta first. Feedback would be really appreciated!

20.12.2020 LiveSharp.Server update 1.7.0

  • Changed runtime to .net 5

This server update is required for the next NuGet package release to support the latest C# features.

NB! Please make sure that you have .net 5.0 installed before upgrading to LiveSharp.Server 1.7.0

25.11.2020 Black Friday deal!

Use the “BF20” coupon code to save 40% on all yearly subscriptions!

24.11.2020 NuGet package update 1.6.33

  • Fixed `OnMethodCallIntercepted` bug
  • Removed loadAssembly warnings. You can still see them is you run livesharp with debug argument.

18.11.2020 NuGet package update 1.6.31

  • Support for Mobile Blazor Bindings
  • Fixed `NewArrayInit` bug
  • Fixed static constructor not being executed bug
  • Fixed ref parameter not working properly bug
  • Added [LiveSharpExclude] attribute if you want to exclude certain types of methods from injection
  • Fixed interceptors functionality
  • Fixed the issue when an external project failed to update
  • Fixed interface method invocation bug
  • Blazor WASM shows debug output when targeting .net 5

11.11.2020 NuGet package update 1.6.22

  • Fixed Blazor CSS Isolation feature support
  • Fixed “An expression of type ‘…’ cannot be used to initialize an array of type ‘System.Object’” bug
  • Improved ref parameters support
  • Started Dashboard redesign to incorporate the debugger in the future version

03.11.2020 NuGet package update 1.6.17

  • LiveSharp runtime performance is greatly improved! In most cases, the only overhead of injected methods is comparing a static field to `null`. Updated method invocation is also very fast with one field read and static `Invoke` delegate method call
  • CSS Isolation in Blazor Components (.NET 5) support added
  • Fixed Xamarin.Forms hot-reload bug that mentioned Rg.Popup plugin

03.11.2020 NuGet Server package update 1.6.7

  • Added `–hide-dashboard` option for cases when you don’t want the Dashboard to pop up after the application start.

09.10.2020 NuGet package update 1.6.12

  • Fixed few livesharp.dashboard.cs issues
  • Fix for `Binding … property not found` issue (https://github.com/OYIon/LiveSharp/issues/89)

21.09.2020 NuGet package update 1.6.10

  • Xamarin.Forms hot-reload bugfixes
  • async methods bugfix

17.09.2020 NuGet package update 1.6.3 “API and Diagnostics!”

  • livesharp.config file is discontinued
  • You will see LiveSharp.dashboard.cs added to your project. This file contains configuration for LiveSharp as well as easy access to the LiveSharp Runtime.
  • LiveSharp Runtime allows you to create your own custom Hot Reload by intercepting method calls, invoking updated methods, and a lot more, all while your application is running
  • LiveSharp Runtime also gives you an ability to create your custom diagnostic panels in LiveSharp Dashboard using HTML
  • You can now run arbitrary code from LiveSharp.dashboard.cs even if you are not in debugging mode. Make sure to use LIVESHARP_DISABLE compilation symbol to remove LiveSharp from deployment builds.
  • NB! Make sure to restart Visual Studio after this update!

02.09.2020 NuGet package update 1.5.77

  • Fixed the issue where after a single change all of the project methods were updated

31.08.2020 NuGet package update 1.5.75

  • Added UNO platform support. If you add a Build method to your user controls and pages it will automatically be called on every update.
  • Added Linux support
  • Added disableBlazorCSS option to livesharp.config runtime section. Set this option to true to disable CSS hot reload in Blazor
  • “Shared” project configuration fixed
  • Concurrent KnownTypes call fixed
  • Blazor CSS hot reload fixed

05.08.2020 NuGet package update 1.5.66

  • CSS hot-reload for both Blazor WASM and Server Side!
  • Fixed a bug where whitespace strings were replaced with empty ones

05.08.2020 NuGet package update 1.5.63

  • Fixed System.Private.CoreLib reference bug
  • Added Hide button for the subscription email field

03.08.2020 LiveSharp.Server update 1.6.6

  • Fixes XAML support for Xamarin.Forms

28.07.2020 NuGet package update 1.5.61

  • Debugger panel replaced with News until I rework the debugger
  • ReflectionTypeLoadException.Types are loaded if the exception occurs during initialization

28.07.2020 NuGet package update 1.5.60

  • Blazor update handler improved
  • Xamarin.Forms update handler improved
  • Added LiveSharpTraceListener which means you can see Trace.WriteLine output without attaching to the process
  • Fixes nested try in async methods bug
  • Fixes ?? bug that occurred in certain cases

01.04.2020 NuGet package update 1.2.5

  • Server side Blazor support
  • Base .ctor call fix
  • Update only modified members
  • Array initialization fix
  • Delegate creation fix
  • Support for switch/case member expressions
  • Foreach element closure fix

10.03.2020 NuGet package update 1.1.49

  • Fixed IL error when using struct
  • Report workspace compilation errors
  • Fixed property setter support
  • Fixed dynamically added properties
  • ViewModel inspector improvements

03.03.2020 NuGet package update 1.1.46

  • Added support for Xamarin.Forms Shell hot-reload
  • Fixed Inspector not working with Shell ViewModels
  • Fixed single whitespace (” “) string bug

28.02.2020 NuGet package update 1.1.41

  • Allow changing Xamarin.Forms hot-reload method name with pageHotReloadMethod setting in livesharp.config More info here: https://www.livesharp.net/help/

28.02.2020 NuGet package update 1.1.39

  • Fixed the 1.1.37 issue, where LiveSharp didn’t work if installed for the first time
  • You can now add and initialize ICommand properties to the VM in runtime

26.02.2020 NuGet package update 1.1.37

  • Now you can create a new property in ViewModel and reference it from XAML without recompilation
  • Fixed issue where creating lots of new instances was degrading the performance
  • Fixed “Element with the name … already exists” error
  • Migrated to livesharp.config from livesharp.rules

12.02.2020 NuGet package update 1.1.31

  • Fixes multiple default keyword issues
  • Fixes base constructor call issue
  • Fixes Invalid IL issue for generic methods
  • Server doesn’t ignore files that are linked from external folder now

23.01.2020 NuGet package update 1.1.22

  • Fixes `System.TypeLoadException : Virtual Non-Abstract Interface` issue

22.01.2020 Package update 1.1.21, LiveSharp Server App 0.9.13

  1. Fixed compilation issue where Cecil failed to Resolve the base type (https://github.com/thisisthekap/livesharp-ArgumentOutOfRangeException-bug)
  2. Fixed issue where some files weren’t triggering updates (https://github.com/OYIon/LiveSharp/issues/45)
  3. for loop is now properly displayed in the debugger (https://www.youtube.com/watch?v=xwpRqD8DThw)
  4. Lots of smaller improvements in the debugger

03.01.2020 NuGet package and LiveSharp Server app updates

Server application has a proper debugger interface now. It can be found under the Inspector tab. Add the method you want to debug and see full execution flow when the method is invoked.

NuGet package fixes CustomRenderer support that was broken on Xamarin iOS and Xamarin UWP (possibly on some other platforms as well).

18.12.2019 Live debugging update

Live debugging is finally here for LiveSharp! Make sure to update both the LiveSharp Server Application and the NuGet package. Then, after connecting to the app, head to Inspector tab, and add a method you want to debug. You will see a list of invocations with parameter values. Clicking on an invocation will show you the whole execution flow with all the values.

Please head to https://gitter.im/LiveSharp/Lobby and tell me what works and what needs to be improved. I really appreciate your feedback!