PowerShell is open sourced and is available on Linux | Blog | Microsoft Azure

Today, we are taking the next step in our journey. I am extremely excited to share that PowerShell is open sourced and available on Linux. (For those of you who need a refresher, PowerShell is a task-based command-line shell and scripting language built on the .NET Framework to help IT professionals control and automate the administration of the Windows, and now Linux, operating systems and the applications that run on them.) I’m going to share a bit more about our journey getting here, and will tell you how Microsoft Operations Management Suite can enhance the PowerShell experience.

Source: PowerShell is open sourced and is available on Linux | Blog | Microsoft Azure

Treat Bugs as Tasks in Visual Studio Online

When we create a new project in Visual Studio Online in Scrum process template, by default it’ll treat bugs also as backlog items. It does not us to use bugs as tasks. But in some cases, we may need to treat bugs as tasks as well. In this blog, I will explain how to use both modes on Visual Studio Online.

When we start development of an application, we have two options to manage bugs in development process.

  1. Bug as a task
  2. Bug as a backlog item

Bug as a task

When we treat bug as a task, we can add bugs under backlog items. When we use this scenario, we can only add backlog items to sprint. Under backlog item we can add bugs and tasks. This mode is not enabled by default in Visual Studio Online. These are the steps to enable it.

  1. Goto Team Settings in project
  2. Goto Work Tab
  3. Goto section Working with bugs
  4. Select “Bugs appear on the backlogs and boards with tasks.”

When we change this mode, task hierarchy will look like below.


In sprint board, bugs can be tracked under the backlog item.


This is useful if project team is small and given bug is managed by only one person. If we need break it to multiple tasks, we can add sub tasks to bug. If there’s such requirement, it’s better to keep bugs as backlog items rather than manage it as tasks.

Bug as a backlog item

When we treat bug as backlog item, it’ll force us to add tasks under bug to track its state. This scenario useful when we split bug into multiple tasks which may be addressed by multiple people in the team. When we use this approach, task hierarchy will look like below.


In sprint board, we can see that we can track state of each task of the bug and assign them to different people.


This mode is useful when application is manage by large team or bug needs to assign to multiple people. In that case, we can create multiple tasks under the bug and track those separately.

Announcing ASP.NET Core 1.0 | .NET Web Development and Tools Blog

Today we are excited to announce the release of ASP.NET Core 1.0! This new release is one of the most significant architectural updates we’ve done to ASP.NET. As part of this release we are making ASP.NET leaner, more modular, cross-platform, and cloud optimized. ASP.NET Core is now available, and you can start using it today by downloading it here.

Source: Announcing ASP.NET Core 1.0 | .NET Web Development and Tools Blog

Get Tenant Id from SharePoint App | JavaScript

In rare cases, you may need to find id for Office 365 tenant or SharePoint app catalog tenant id. This solution is for you, who want to get tenant id or unique id for a SharePoint farm with in a SharePoint App using JavaScript.

This solution can only be used when host web has SharePoint App installed, reason for that is, in order to get tenant id, it uses the product id of the app. If SharePoint App is installed in the site, this solution can be used in the host web or in the app web.


VMWare Fusion: Access SharePoint App from Mac Host

If you are a SharePoint App (Add-In) developer who uses a Mac and VMWare Fusion for VMs, you may wonder whether you can access your app from host. May be you want to test your app in Safari on Mac, or may be, just may be your VM is too slow when Chrome running on it (that was my case 😉 ). For what ever the reason, if you want to access your app from Mac, this is the guide for you.

First step of this guide is basic configuration of your VM, SharePoint and host Mac OS to make it available.

Add network adapter to your VM and set its connectivity type to NAT (Share with my Mac on settings). You don’t have to do this if you already have a NAT adapter. Now if you goto Network Connections on Windows, you must see an adapter which have IP begins with 172.xxx.xxx.xxx. If you want to use the subnet as it is, you can ignore next steps and make IP address static on it to make sure it won’t change later. Remember to add the default gateway when you add static IPs.

To change the subnet of your network adapter, you have to update internal settings of the NAT adapter. When you set connectivity type to NAT in any network adapter, it automatically point to vmnet8 internal adapter. What we are going to do is to update its settings so that you can add subnet mask you want.

  1. First turn off all the VMs running and quit VMWare Fusion
  2. Goto folder
    In Fusion 4.x and above:  /Library/Preferences/VMware Fusion/
    In Fusion 3.x and earlier:  /Library/Application Support/VMware Fusion/
  3. Open networking file and update subnet and mask as appropriate
  4. Goto folder  vmnet8  and open  nat.conf
  5. Update NAT gateway address which aligned to above subnet and mask
  6. If you are using Fusion 4.x, just start VMWare Fusion, 3.x and below, run below command

    Note: When using 4.x and above, do not use the boot.sh –restart command because it may result in unexpected behaviors. Instead, restart Fusion.
  7. Goto SharePoint VM, make NAT network adapter configuration static and update IP and gateway IP which aligns to above configuration.
  8. Disable firewall settings or allow access from host to Windows.
  9. Run ping on your IP from terminal to make sure it works.

This is not required, but if you want to access one of your web application from IP, you can update alternative access mapping of your web application to IP address and check whether it’s accessible via host. This is not recommended because, in this way you can only point to one web application, but you want all of your web applications accessible from the host.

In my case, I have two completely different domains to web applications and apps.

Web applications: *.zeus.com
Apps: *.apps.contoso.com

What I want to do is to access both of these from my host. If you may notice, if I need to access only web applications and I only have few number of web applications, I can just update  hosts file in Mac OS and access it via host. But the issue is accessing apps, when you develop SharePoint Apps, each time you deploy it to SharePoint, it changes the domain name of the application, and we can’t add wild card domain names to  hosts file. Because of this reason, we goto next stage of this tutorial.

  1. Install  Homebrew if you don’t have it on your Mac
  2. Install  dnsmasq , using this tool, you can setup your DNS resolver. Read more about dnsmasq here.
  3. Make sure you have  /usr/local/etc folder exists.
  4. Now I want to point above mentioned wildcard domains to my VM IP (

    Purpose of this command is to create  dnsmasq.conf file in   /usr/local/etc which have following lines.

    From this what is says is to point all traffic from *.zeus.com and *.apps.contoso.com to IP
  5. Now we want Mac OS resolver to use  dnsmasq only for above wildcard domains. First we have to create folder which contains custom resolver domains.

    Add custom domain to use resolver in localhost.

    Now you have resolver pointed to  dnsmasq only for domains we need.
  6. Now we want to launch dnsmasq and restart it with Mac OS startup.
  7. Run pings on few domain names under your wildcard domains to see the beauty. 😉

Now you can peacefully try your SharePoint domains from Mac OS browsers and verify your application works on all environments.

Adding bookmarks to Azure Subscriptions

For sometime, we had 2 Azure portals, called classic portal and new portal. Time to time you may be a administrator who manages multiple subscriptions. In that case, you may be tired with navigating one subscription to other because, by default in both portals, when you log-in using your credentials, it navigates to default subscription, in most cases, it’s the first subscription you mapped to your account.

In both portals, it creates it’s own Microsoft account to manage subscription information in the system ( Updated: Now you can map it to account in your own Azure AD or AD of your organization, so you can login from organization account to manage your organizations Azure subscription ).

Classic Portal

For classic portal, it’s easy to add bookmark to your subscription because when you change your subscription in the portal, you can clearly see the URL change for it. You will probably see something like this in the URL,

where {your-account-name} is usually your email address without @ and top level domain. It will look something like samwoutlook (samw@outlook.com) or samwgmail (samw@gmail.com). Anyways it does not matter how it comes because if you remove unwated parts from URL and add it as bookmark, it’ll work without any issue.

New Portal

For new portal, as you may already noticed, you can’t add URL you see as bookmark because it’s not mapped to your subscription. You have to make sure that you are logged in from the credentials which mapped subscription to make sure that you see the correct subscription on load. But let’s say you are administer of multiple subscriptions, which doesn’t mapped to your credentials, in that case, you may have hard time logging into the correct subscription because it always goes to default subscription and then you have to navigate back from the portal itself to change the subscription.

Even-though you don’t see bookmarkable URL when you logged in, you can create bookmark which make it automatically logs into correct subscription.

{your-subscription-name} can be found when you click on your account icon in top right, there you can see list of subscriptions you have. There you can find the subscription name which you can used to add to your url. It won’t necessary be derived from email address , it can be organization name as well.

Happy bookmarking people! 😉