Upgrade npm on windows

npm currently has 3.10.6 (as of 16-Jul-2016) currently available as a beta.
You can currently install 3.x.x alongside 2.x.x by using the command

>npm install -g npm3
but that is not what I wanted.
I wanted to run npm as npm and I wanted to be running npm version 3.x.x so that I could use Angular 2

I followed the instructions from this link https://github.com/felixrieseberg/npm-windows-upgrade

Run Powershell as administrator

> Set-ExecutionPolicy Unrestricted -Scope CurrentUser -Force

> npm install –global –production npm-windows-upgrade

>npm-windows-upgrade

Now have version 3.10.6 installed

Thank you to the Microsoft DX Engineers

IIS URL Rewrite Gotcha

When using Visual Studio, and starting a website using F5 or ctrl-F5, the website displayed is the live website and not the localhost website on your development machine. Why?

URL Rewrite Add RuleThe problem can be caused by , for example, using url rewrite to force your website to use the www prefix.

Using the rule template Canonical domain name the code generated in the web.config file will look like rule CanonicalHostNameRule1, shown below:

What it means is that any {HTTP_Host} that does not match www. example .com will be redirected to www. example. com.

This will also include http://localhost:12345/,  the local web address used by visual studio.

Fortunately, many developers system may not have the URL Rewrite module installed (it is a separate download), and therefore will not encounter this problem. Unfortunately, it could take some developers by surprise if this module is downloaded at a later date, and they find that whilst trying to debug their website on their local machine, they find their browser displaying the live website.

One further quirk, is that even when you find the offending rewrite rule in the web.config and remove it, there appears to be some sort of persistent memory that will remember the permanent redirect and the debug session will still be redirected to the live site (http:///www.example.com).

Any comments on how to remove this ‘persistent’ memory of the 301 redirect would be most useful for those confronted by this issue.
<rewrite>
<rules>
<rule name="CanonicalHostNameRule1">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" pattern="^www\.example\.com$" negate="true" />
</conditions>
<action type="Redirect" url="http://www.example.com/{R:1} redirectType="Permanent" />
</rule>
</rules>
</rewrite>

This issue can be easily worked around by editing the rule manually to the following:


<rewrite>
<rules>
<rule name="Add WWW prefix">
<match url="(.*)" ignoreCase="true" />
<conditions>
<add input="{HTTP_HOST}" pattern="^example\.com$" />
</conditions>
<action type="Redirect" url="http://www.example.com/{R:0}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>

Any insights on the pros and cons of the above two rules would be welcomed.

A final note to anyone looking at URL rewrite is that Pluralsight have an excellent course by Scott Forsyth entitled URL Rewrite for Developers.

Visual Studio 2012 Install : Setup completed: however not all features installed correctly – KB2504637 Package Failed

21-Sep-2012. Got RTM version of VS2012 Professional downloaded from MSDN.

Installing on Windows 7 – Windows v6.1 (Build 7601: Service Pack 1)

Setup completed: however not all features installed correctly

KB2504637 Package Failed.

KB 2504637  appears to refere to the System.Net.dll in the .net 4 framework for multi targeting. As such the impact of the error being reported during the install in unknown. Check out the Micorsoft KB link below:

http://support.microsoft.com/kb/2504637

There are several complaints out there regarding this probelem, but the response so far has been – ‘unable to reproduce’

Further Examples can be found at the following URLs:

http://social.msdn.microsoft.com/Forums/en-US/vssetup/thread/91b13baa-6b6e-43a5-932b-0ce94a1652ce

https://connect.microsoft.com/VisualStudio/feedback/details/753274/error-for-kb2504637-when-installing-vs2012-rc-premium

Log is:

=========================================================================================

The file below is a .xlsx Excel file containing the installation log for Visual Studio 2012

dd_vs_professional_20120921102231

=========================================================================================

Innovative Approach to Overcome Unit Test Failures

Nowadays, software productivity seems to take an important place in the software development process. More and more software development groups starting to understand the importance of delivering the product to the market as fast as they can. Many of them are using methodologies and productivity tools to speed up the process.

 One of the major obstacles in getting to the delivery date ready, is the time you waste when automatic tests start to fail. You usually can’t predict when it will happen, and how long would it take for your team to fix it. This makes it hard to estimate how much time you need in order to complete developing a certain feature.

Much more frustrating is the exhausting process a developer needs to go through in order to fix something which used to work just several days ago. If you have no clue of the latest changes which caused your unit test to fail, you would normally start a debug session in order to find the problem. Some developers might check the source control system and review the latest changes, trying to guess the latest change set that caused the failure, then run the unit test with and without the change, in order to conclude whether it is the one to blame. In both cases, the developer usually spends several hours until finding the source of the problem.

Developers that suffer from the problem mentioned above may be interested in the following Unit Testing Tool which helps developers to overcome unit test failures, and thus save valuable development time.

WiseTester

WiseTester

WiseTester helps .NET teams to overcome unit test failures by providing IDE-Based Unit Test Analysis and Source Control Based Unit Test Analysis. When a certain unit test fails, either on the developer’s machine or on the build server, WiseTester can find the exact code changes that caused the failure, saving the time of debugging the code in order to find the problem.

The ideology of the WiseTester is that when a developer gets a notification that one of his unit tests failed, the notification should come together with the exact code changes which caused the failure, before he even starts any debugging.

The IDE-Based Unit Test Analysis is based on information collected from the Visual Studio during the development sessions, and can point the problematic code changes which caused a certain failure up to the code line resolution. In the following screenshot we can see a problematic code change which caused a certain unit test to fail, and was detected by the WiseTester among all the other code changes made in the same development session.

WiseTester detected the exact code line which caused the failure

WiseTester detected the exact code line which caused the failure

 The Source Control Based Unit Test Analysis is based on information coming from the Source Control system, and can point the change set which caused a certain failure, even if it had been committed by another  team member. The following screenshot displays a Unit Test Analysis result which found the developer responsible for breaking the unit test.

WiseTester detected the change set which broke the unit test

WiseTester detected the change set which broke the unit test

Developers usually think about whether the added value of a certain solution is worth the time needed to integrate this solution into the development environment. WiseTester takes that into account, providing a quick setup and a one step integration. No code changes nor migrations are required in order to integrate the solution.

One Step to Add a Solution to the Watchlist

One Step to Add a Solution to the Watchlist

Thanks go to Lior Peleg for writing this article for the TheLudditeDeveloper blog.

Silverlight Navigation Project (VS2008) – Question

Silverlight-Navigation-Project

Silverlight-Navigation-Project


I have created a minimal project to illustrate the problem. I am using VS2008 SP1 and Silverlight 3.

I created a Silverlight Navigation Project, Added a Product Model, A SingleProductView, and a ProductViewModel.

I added 2 new Pages Review.xaml and Cart.xaml.

Review.xaml uses the SingleProductView to display the product details and an [add to cart] button which when clicked should add the product to the Shopping Cart and then navigate to the Cart.xaml page.

The problem I have is in the SingleViewModel.

The SingleViewModel contains a button (btnAddToCart), which should add the product details to the cart (will be a database populated using a web service call) and then it should navigate to the Cart Page (Cart.xaml)


<UserControl x:Class="SL3NavTest01.SingleProductView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    xmlns:local="clr-namespace:SL3NavTest01"
    xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"
    d:DesignWidth="950" d:DesignHeight="800">
    <Grid x:Name="LayoutRoot" Background="White">
        <StackPanel Orientation="Horizontal" VerticalAlignment="Top">
            <Image   Source="/SL3NavTest01;Component/Assets/Images/VS2010Ultimate.jpg" Stretch="None" Height="200" Width="200"
											HorizontalAlignment="Center" VerticalAlignment="Center"/>
            <StackPanel Margin="20,0,0,0">
                <TextBlock Text="{Binding Name, Mode=TwoWay}" TextWrapping="Wrap" Margin="0,30,40,0"
									FontFamily="Verdana" FontSize="18" Foreground="Black" FontWeight="Bold" />
                <StackPanel Orientation="Horizontal" Margin="0,30,0,0">
                    <TextBlock Text="Price: " FontFamily="Verdana" FontSize="16"
										Foreground="Black" FontWeight="Normal" />
                    <TextBlock Text="{Binding Price, Mode=TwoWay}"
										FontFamily="Verdana" FontSize="16" Foreground="Black" FontWeight="Normal" />
                </StackPanel>
                    <Button x:Name="btnAddToCart" Width="75" Margin="0,30,0,0" Content="Add To Cart"
                     Click="btnAddToCart_Click"/>
            </StackPanel>
        </StackPanel>
    </Grid>
</UserControl>


Imports System.Windows.Browser
Partial Public Class SingleProductView
    Inherits UserControl

    Public Sub New()
        InitializeComponent()
    End Sub

    Private Sub btnAddToCart_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
        '
        '   The project has been simplified so as to only include the structure and context of where the
        '   problem exists.
        '
        '
        '   On clicking this button the code should:
        '
        '   1.  Add Product to Shopping Cart (via Web Service)
        '   2.  Then navigate to the Shopping Cart Page (\views\Cart.xaml)
        '
        '
        '   Code to add product to shopping cart (I can do this part!)
        '   ----------------------------------------------------------
        '
        '
        '
        '   Code to navigate to Cart.xaml (This is the problem!!!)
        '   ------------------------------------------------------
        '
        '
        '
        '   I can't find a syntax that would do the equivalent of the following:
        '   ContentFrame.Navigate(New Uri("/Cart", UriKind.Relative))
        '
        '   This is my solution:
        '   I know the view is used on the "Review" page and I want to navigate to the "Cart" page.
        '   Also required Imports System.Windows.Browser
        '
        Dim strNav As String = HtmlPage.Document.DocumentUri.ToString
        strNav = Replace(strNav, "Review", "Cart")
        HtmlPage.Window.Navigate(New Uri(strNav, UriKind.Absolute))
        '
        '   It may be that I should use a Hyperlink button, but I am uncertain as to how I would be able
        '   to Add the Product to the Shopping Cart first then Navigate to the Cart.xaml Page.
        '
        '   I realize that this is not stricly MVVM, but I am looking to get the simple solution working
        '   first.
        '
        '   Feel free to provide references to the "correct/best practice" way to do this.
        ''
    End Sub
End Class

Found this thread
http://forums.silverlight.net/forums/t/2684.aspx
which has been read 99,870+ times (may suggest the tiniest of gaps in silverlight functionality or documentation).

My solution is as follows:

        Dim strNav As String = HtmlPage.Document.DocumentUri.ToString
        strNav = Replace(strNav, “Review”, “Cart”)
        HtmlPage.Window.Navigate(New Uri(strNav, UriKind.Absolute))

requires

Imports System.Windows.Browser

I have attached the original simplified project solution zip file so that you can try out various solutions

 SL3NavTest01.zip

Download SL3NavTest01.zip.doc and rename to SL3NavTest01.zip and see what you can come up with.

SL3NavTest01TestPage.html should be used as the start page.

The Luddite Developer.

Silverlight Security – Code Obfuscation – Part Two

Seems like many .NET developers nowadays are concerned with deploying their apps without applying any form of protection on them beforehand.
As mentioned in a previous post silverlight code must be downloaded to the client machine, this makes it possible to recover the original source code using tools such as ILDasm & .NET Reflector.

Most of us, when we think of obfuscating silverlight apps, refer to a form of obfuscation called ‘symbol renaming’ which means changing the names of classes, methods & variables to meaningless names. The result is a much harder code to read, that makes it more difficult for someone to follow the semantic meaning of the internal structures included in the obfuscated assembly.

This doesn’t come without a price, often due to usage of reflection API either directly by the programmer who wrote the assembly or indirectly by the .NET class library relying on reflection API (e.g. xml serialization, web services) the code would break.
In addition symbol renaming makes it more difficult to understand exception stack trace information collected from production environments as original method names are no longer available. The image below demonstrates how an exception stack trace may look like:

Obfuscated call stack

Developers searching for non-invasive solutions, one that doesn’t suffer from the flaws mentioned above may be interested to look at CliSecure .NET Obfuscator, this is a code protection solution that offers new forms of obfuscation that are effective, easy to configure and integrate with your existing silverlight apps or others still under development  (support for windows phone 7 included).

CliSecure .NET Obfuscator site

On top of symbol renaming CliSecure .NET obfuscator introduces advanced forms of control flow obfuscation and a new obfuscation technique called ‘method call obfuscation’.

Control flow obfuscation aims to destroy existing code patterns and transforms them to different ones that are much harder to follow, the image below shows how a simple for loop would look like after using this method.

Control flow obfuscation demonstrated

Even more interesting is to see the IL representation of the method as shown in .NET reflector, it appears that .NET reflector fails translating the byte code to C# or any other .NET language:

Method call obfuscation hides calls to external library calls, either ones that reference the .NET class library or ones that reference other assemblies developed internally. External calls normally survive symbol renaming as method binding occurs during run time using the method name, however using this method binding is attempted using the method token, an internal token stored within the metadata section that can be used to resolve methods calls.

Method call obfuscation code snippet

As seen in the image below the call to Console.WriteLine is replaced with a call to a delegate method that hides the original call. This method effectively breaks the application code flow, making it harder to browse through the code flow using standard reflection tools.

Which versions of Silverlight 3 components do I need for VS2008 SP1 and VS2010?

Which Versions of Silverlight 3 Components are required for VS2010

Which Versions of Silverlight 3 Components are required for VS2010

Running on a XP SP3 system.

I want to keep developing applications using VS2008 SP1, Expression Studio 3 and Silverlight 3.  I don’t want to break anything.

I would like to download and start using VS2010 again without breaking anything.

I noticed the following installation issue regarding VS2010 and Silverlight 3 SDK.

http://blogs.msdn.com/amyd/archive/2009/10/21/visual-studio-2010-and-silverlight-3-sdk.aspx

Visual Web Developer in Visual Studio 2010 has support in box for Silverlight 3 development and includes the Silverlight 3 developer runtime and Silverlight 3 SDK build 3.0.40818.

Silverlight 3 Tools for Visual Studio 2008 and Expression Blend 3 included SDK build 3.0.40624.

Silverlight 3 SDK build 3.0.40818 cannot be installed on machine where build 3.0.40624 is already installed. If you install Visual Studio 2010 on a machine that already has build 3.0.40624 installed, Visual Studio 2010 will indicate that the Silverlight 3 SDK failed to install, however you will still be able to do Silverlight development on Visual Studio 2010 with build 3.0.40624.

Silverlight 3 SDK build 3.0.40818 contains the following updates:

  • Remove dependency on .NET 3.5 and allow build when only .NET 4 is installed
  • Support for use of non-unicode characters in xap name
  • Improvements to refactoring and intellisense

To get build 3.0.40818of the Silverlight 3 SDK, uninstall Silverlight 3 SDK build 3.0.40624 from Add/Remove Programs and then install Silverlight 3 SDK build 3.0.40818 from: http://go2.microsoft.com/fwlink/?LinkID=157102.

———————————————————————————————————

I checked my own system using the Add/Remove Programs utility and found the following:

Currently Installed Program Version
Microsoft Silverlight 3.0.50106.0
Microsoft Silverlight 2 SDK 2.0.31005.0
Microsoft Silverlight 3 SDK 3.0.40624.0
Microsoft Silverlight 3 Toolkit – July 2009 3.0.30702.0037
Microsoft Silverlight 3 Tools for Visual Studio 2008 SP1 –ENU 9.0.30730.126

I found that I can get the following Downloads:

Download URL
Microsoft Silverlight 3 Toolkit – Nov 2009 http://silverlight.codeplex.com/releases/view/36060
Microsoft Silverlight 3 SDK version 3.0.40818 http://www.microsoft.com/downloads/details.aspx?FamilyID=1ea49236-0de7-41b1-81c8-a126ff39975b&displaylang=en
Microsoft Silverlight 3 Tools for Visual Studio 2008 SP1 –ENU http://www.microsoft.com/downloads/details.aspx?familyid=9442B0F2-7465-417A-88F3-5E7B5409E9DD&displaylang=en

 

Questions

  1. I do not develop for Silverlight 2, can this be safely uninstalled?
  2. In what order do I need to remove installed programs/versions and in what order do I need to install new versions?
  3. If I uninstall the Silverlight 3 Toolkit – July 2009, will this break existing applications using this toolkit?
  4. Can the Silverlight 3 Toolkit – July 2009 and Silverlight 3 Toolkit – Nov 2009 be safely installed side by side?
  5. Is there a general rule for what can and cannot be installed side by side with the various Silverlight components?
  6. I already have the current version for Microsoft Silverlight 3 Tools for Visual Studio 2008 SP1 –ENU installed.  Will it need to be re-installed?

Thanks in advance for any replies.