Monthly Archives: September 2015

Useful Links for Windows 10 Developers

Windows-10-banner-logo-nodevs-02

Please find few useful links for developing Windows Universal Applications in Windows 10.


What’s new for developers in Windows 10

Windows 10 and new developer tools provide the tools, features, and experiences powered by the new Universal Windows Platform.


Get started with Windows apps

Build Windows apps now. Windows 10 makes it easier than ever to develop apps for the Universal Windows Platform with just one API set and one app package to reach all Windows 10 devices – PCs, tablets, phones, and more.


Design UWP apps

A great app starts with a great user interface. Learn how to design a Universal Windows Platform (UWP) app that looks fantastic on all Windows 10-based devices, from phones and tablets to PCs and Surface Hub.


Develop Windows apps

Here’s the training you need to create Universal Windows Platform (UWP) apps for Windows 10. A UWP app can run on any Windows-based device, including phones, tablets, and PCs. If you’re looking for docs for older Windows app types and previous versions of Windows, you’ll find them here, too.


Publish Windows apps

The new unified Windows Dev Center dashboard lets you publish and manage all of your apps for Windows devices

Create your own ISE Addon using Visual Studio 2013

Windows PowerShell discussion with System Administrators and Developers: Feedback – ISE has no good Add-On’s. Many uses ISE Steroids which is an excellent add-on for PowerShell ISE. We do have script browser and analyzer now.

Comparing ISE with Visual Studio is not fair 🙂 Why do you want to do that? WMF 5.0 and it’s features are far better than earlier versions. So, indeed PowerShell ISE is also grown up 🙂

We don’t have commands to meet all our needs in Windows PowerShell so we create a function , Proxy Functions, Workflow, Class or modules for various needs. Similarly, we can create our own add on for ISE. Let us see a quick demo of it using Visual Studio 2013.

We can easily create this using with the available VSIX if not you can opt for WPF Control Library and create a add-on as required by adding Microsoft.PowerShell.GPowerShell. In this article we will make our job easy by using VSIX – Click to download .

Read the documentation and install the VSIX as required. Now, we will create a simple CustomAddon which will insert a code or some string into the current ISE file.

Open Visual Studio 2013 and choose Visual C# and select PowerShell ISE Add-on for VS2013. Name it as required! In our case I have named it as CustomAddOn as shown below

1

Now open up the UserControl1.xaml.cs code – Just double click it and the below will be the default code.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Microsoft.PowerShell.Host.ISE;

namespace CustomAddOn
{
    /// <summary>
    /// Interaction logic for UserControl1.xaml
    /// </summary>
    public partial class UserControl1 : IAddOnToolHostObject
    {
        public UserControl1()
        {
            InitializeComponent();
        }

     <strong>   public ObjectModelRoot HostObject
        {
            get
            {
                throw new NotImplementedException();
            }
            set
            {
                throw new NotImplementedException();
            }
        }</strong>
    }
}

Okay, we have the pseudo code – let’s do some modification and test the ISE add-on to insert a code or some string in ISE. To do that first we need to comment the below lines and just add get and set like shown below

public ObjectModelRoot HostObject
        {
            //get
            //{
            //    throw new NotImplementedException();
            //}
            //set
            //{
            //    throw new NotImplementedException();
            //}
            get;
            set;
        }

Now, it’s time for us to add the controls and code as required. For, testing let us add a button and trigger an event which inserts code or string in ISE current file.

So, I have added a button in XAML file and the code looks like below

<UserControl x:Class="CustomAddOn.UserControl1"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300">
    <Grid>
        <Button Content="Insert Code" HorizontalAlignment="Left" Margin="32,57,0,0" VerticalAlignment="Top" Width="215" RenderTransformOrigin="-0.846,-0.893" Name="code" Click="click_insert"/>

    </Grid>
</UserControl>

Just make a note – I have made the name of the button as code and created a click event but haven’t did any code for event firing. so, to do that we will jump back to CS file and code as given below.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Microsoft.PowerShell.Host.ISE;

namespace CustomAddOn
{
    /// <summary>
    /// Interaction logic for UserControl1.xaml
    /// </summary>
    public partial class UserControl1 : IAddOnToolHostObject
    {
        public UserControl1()
        {
            InitializeComponent();
        }

        private void click_insert(object sender , RoutedEventArgs e)
        {
            HostObject.CurrentFile.Editor.InsertText("Get-Service");
        }

        public ObjectModelRoot HostObject
        {
            //get
            //{
            //    throw new NotImplementedException();
            //}
            //set
            //{
            //    throw new NotImplementedException();
            //}
            get;
            set;
        }
    }
}

Do right click on the CustomAddon in solution explorer and Build your solution then spin up your PowerShell ISE and execute the below piece of code

Import-Module C:\Temp\CustomAddOn\CustomAddOn\bin\Debug\CustomAddOn.dll
$psISE.CurrentPowerShellTab.VerticalAddOnTools.Add("CustomAddOn" , [CustomAddOn.UserControl1] , $true)

🙂 🙂 🙂 🙂 🙂 Tada! We have our Custom Add on in ISE

2

In PowerShell we can do the same using below one liner 🙂

3

That’s it for now ! We will see more WPF controls and building ISE Add-On’s using Visual Studio 2013!

Cheers! Enjoy PowerShell!