Speed Comparison: Benchmarking 5 popular .NET logging libraries
dotnet publish -c Release -r linux-arm

Windows: Deploy:
scp -r ./bin/Release/netcoreapp2.1/linux-arm root@



NLog Configuration File:

NLog Console Application:




.NET Core Application using SQLite and Running on Raspberry Pi / Linux / ARM

Console .NET Core Application using SQLite.


# create new console .net core application using command line
dotnet new console -o DotNet.RaspberryPi.App2

# change directory
cd DotNet.RaspberryPi.App2

# add ef nuget package to project
dotnet add package Microsoft.EntityFrameworkCore.Sqlite
dotnet add package Microsoft.EntityFrameworkCore.Design
dotnet restore

# open project in vs code – open vs code using command line
code . #run visual studio code from current directory

# build database using entity framework migrations / update command
dotnet ef migrations add InitialCreate
dotnet ef database update


dotnet publish -c Release -r linux-arm


To Raspberry Pi / Linux / ARM device using SCP / SSH remote connection. Important part: the executable file is located in bin/Release/netcoreapp2.1/linux-arm/publish. You will also need to run chmod +x if run under other user than root.

Deploy Example: 
scp -r ./bin/Release/netcoreapp2.1/linux-arm root@

More on this can be read on previous published article: Create .NET Core Application And Deploy it to Raspberry Pi / ARM Device / Linux






Create .NET Core Application And Deploy it to Raspberry Pi / ARM Device / Linux


  • Raspberry / ARM Device / Linux Device
  • SSH access to device / for deployment purposes
  • .NET SDK installed on Windows/Linux/Mac – where App will be developed
  • Windows Command Line SSH


  • IDE / Visual Studio Code / Visual Studio

1. Create .NET Core application using command line / or Visual Studio

Command Line / Visual Studio Code

dotnet new console -o DotNet.RaspberryPi.App1

2. Build / Publish using Command Line

dotnet publish -c Release -r linux-arm

3. Deploy to Raspberry Pi device / Linux ARM Device

We will move / copy files to destination (ARM device) using SCP command, which stand for Secure Copy. Replace parameters to meet your needs.

  • Source Path / Folder
  • Destination Path / Folder
  • IP Address



scp -r ./bin/Release/netcoreapp2.1/linux-arm root@


4. Run the App on the Device

First you’ll need to change permissions on executable ARM/Linux file by using chmod command. Also, move to publish directory where file is located.

This steps should be done on the device over SSH or direct connection. Connect to device using SSH command line command(alternative is Putty), Linux has command included by default.

IP address of the device can be found using:

  • nmap (nmap <IP-ADDRESS:RANGE-FROM>:<IP-ADDRESS:RANGE-TO>, example: nmap or
  • you can go to your router and list devices. Router IP can be found using
    • ipconfig command line (Windows) or
    • ifconfig (Linux). Look for default gateway.

When you have all the parameters that you need, you can continue to executing the command below:

#connecting to the remote device

cd /home/<USER>/apps/bin/Release/netcoreapp2.1/linux-arm/publish
#changing directory to publish folder

sudo chmod +x <AppName>
# change execution permissions on application

#run application

Source Code


Things you should know about the Public Website template in Sharepoint Online (Office 365)

If your business is in need of a simply presented website (like one of these) you can consider your Office 365 for Business tenant as CMS and hosting provider.

Office 365 for Business comes with an option to create one Site Collection as Public Website. Creating custom masterpages and publishing them became a lot easier with the new version of Sharepoint 2013/Online (Sharepoint Online is part of Office 365). Mapping an existing or new Domain name is fairly easy as well. By default you get built-in integration with GoDaddy. It is hard to believe, but this just works as expected. Wizard does all the hard work for you.

Why you should consider this?

Because to host a web site you need a hosting provider and the cheapest is at least 50€/year. You might say – I will just host a web site in AzureI get 10 web sites for free. That is an option. But to map a Domain on your “free” web site you will first need to change hosting type from Free to Shared. You should also consider that Office 365 ( + Sharepoint Online) is CMS as well. End-user, by default, gets an ability to edit a website on their own – no developer needed … Etc.

There are limitations:

What do I mean with limitations? – There are features that you get on On-prem Sharepoint 2013 and don’t get on Sharepoint Online (Office 365 for Business).  See more: Feature Comparison

Limitations of Sharepoint Online (on day: 15.9.2014):

  • No Clean Url manipulation for each page
  • No Term Store manipulation
  • No Cross Site Publishing
  • No Search functionality (Content By Search Web Part)
  • No Sub Sites(SPWebs)
  • Etc. .. go to Site Settings for more.

So if you’re considering using these features and they are the requirement, my advice to you – start requesting features on UserVoice (Microsoft is listening to user request). If there is a decent amount of votes for a specific feature, they might put an effort into building it, eventually include it. There are already a couple of features that were added just because of user demand.

This post will be updated over time. Public Website template might receiving new features.



How to Publish A Custom Web Design On Sharepoint Online (Office 365) Public Web Site

Below are the steps you must take to create and publish a custom design to Sharepoint Online Public Website:

  1. Create Public Website Collection in Office 365 Tenant
  2. Map network drive
  3. Upload files (html,js,css,images)
  4. Create Master page using Design Manager
  5. Publish changes and new Master page
  6. Set Master page

Create Public Website Collection in Office 365 Tenant

Skip this step if you have already created a public web site collection

  • Navigate to Site Collections under Sharepoint Admin Center (Navigation > Admin > Sharepoint > Site Collection)
  • Select New – option from Ribbon. Next – select Private Site Collection.
  • Confirm settings – create new public website
    Note: you can have only one Public Website per domain.

Map Network Drive

Maping network drive to Sharepoint Online/Office 365 site collection/document library is already well documented process so I will just provide link to an MSDN article – http://support.microsoft.com/kb/2616712

In general, the steps below should do the necessary:

  • Select the Keep me signed in check box*
  • Add your SharePoint Online sites to trusted sites*
  • When you map the new network drive use the URL of the newly created public website,
    URL will probably be in a format similar to this – https://<tenant-name>-public.sharepoint.com/_catalogs/masterpage
    Note: Write a comment if you have problems with this step

Upload Files

What you really need to do is just copy files to network drive. Design files are usually found in the folder under <site-collection-url>/catalogs/masterpage/<new-folder>. Create a new folder and paste/move files.

Create The Master Page Using  Design Manager

  • Go to Site Settings – Design Manager under Look and Feel Group (Public Website Collection > Site Settings > Design Manager) or just add this to the URL of a Site Collection – _layouts/15/DesignMasterPages.aspx
  • On the left side of the new window select Edit Master Page
  • Select Convert an HTML file to a Sharepoint master page
  • Navigate to the HTML file you will convert to the Masterpage
  • If conversion succeeds you will be notified in the Status field
    Note: In case of failed conversion follow error message – most of the time they are really descriptive and helpful

Publishing Changes And New Master Page

Check In every single file you need for this design to be visible from the web and Anonymous users to see. Since Sharepoint Online is missing a feature of Multi Select-Check-In (this is something that Sharepoint On-premise has no problem doing), you should just use Sharepoint Designer, unless you have the time and energy to Check-In all the files one by one. I doubt that.

  • Install > Open Sharepoint Designer
  • Open Site Collection of Public Website
  • Go to folder where the files are (_catalogs/masterpage/<folder>)
  • Select files > Check In > Publish
  • Note: You will still need to go over every folder – you can’t select a folder an Check-In/Publish all the files it contains #fail

Set Master Page To Site Collection

  • Go to Site SettingsMaster Page (under Look and Feel Group)
  • Select Master page next to: Specify a master page to be used by this site and all sites that inherit from it:
  • Note: If master page file has no errors and master page (.html) was Checked-In you should be able to see it from drop down control

Give us a feedback in comments below. Thanks!



Mail App (Apps for Office) And How To Build One Series

In this blog post you can read how to create a mail app. Mail apps are apps that get displayed next to Outlook items you’re viewing or writing to enhance the browsing or authoring experience. Mail apps are part of Apps for Office: msdn.microsoft.com

Main Pros of Mail Apps:

  • Can integrate business process directly into Outlook
  • Is working in OWA and Outlook – same code
  • Mail App project is build using Client side code only

What this Mail App will do:

  • Query custom web service (which we create)
    • send the email address of a user sending an email as a parameter to exposed web service
  • Display returned data in the mail app container using KnockoutJS

End Result

End result will be an app for Outlook as seen on the image above. It will display found company and its yearly report on Revenue/Profit. In example above, email was sent from one of MS people(@microsoft.com), since app shows data of Microsoft Corporation. All data is fictional, inserted in the step of creating a database.

Articles – Separated into smaller chunks:

  • (Coming) Article 1 – We will create database which will expose data – (Code First, Entitify Framework)
    • this database can represent data of a backend system, hosted in Azure
  • (Coming) Article 2 – Create web service using ASP.NET WebApi
  • (Coming) Article 3 – Display data using Knockout + HighCharts Javascript library
  • (Coming) Article 4 – Using created Web Service, javascript cross site call – JSONP

Apps for Office App Error – This app could not be started

If you receive this error below, you should consider checking your settings under IE – Internet Properties – Security – Internet (see picture below)

  • Error
    App Error – This app could not be started. Close this dialog to ignore the problem or click “Restart” to try again. 

  • Solution
    Internet Properties – Security – Internet – Enable Protected Mode



%d bloggers like this: