When connecting to Microsoft Analytics Platform System (APS) from SQL Server Data Tools for Visual Studio 2013

I like to keep it simple so I won’t dedicate much space and time to describing how baffling and annoying this was to solve.

OK, that was a lie; I will have a quick rant.
It seems that the “reward” for keeping it Microsoft (i.e.: building your data warehouse on Microsoft technologies instead of linux/open source alternatives) is hours of installation/configuration time (and this is just to connect from the client, I am not ranting about setting up a server here), and an updated (read: inferior) user interface (there are a lot of annoying differences between keyboard shortcuts for SQL Server Studio and SQL Server Data Tools for Visual Studio – I’m sure this could have been avoided).

Microsoft: you can do better (and you know it).

Anyway, here’s the error message:

The ‘ToolboxPackage’ package did not load correctly.

The problem may have been caused by a configuration change or by the installation of another extension. You can get more information by examining the file ‘C:\Users\$user\AppData\Roaming\Microsoft\VisualStudio\12.0\ActivityLog.xml’.

 

Checking said activity log reveals this:

<entry>
<record>956</record>
<time>2016/01/14 17:17:34.102</time>
<type>Error</type>
<source>VisualStudio</source>
<description>No InprocServer32 registered for package [Microsoft.VisualStudio.Toolbox.ToolboxPackage]</description>
<guid>{6F453E1A-31DF-4CD6-AF8B-72AE242272B9}</guid>
<errorinfo></errorinfo>
<path>%windir%\system32\mscoree.dll</path>
</entry>

Cue lots of googling…

I tried this, this, and this before I found this – which did the job.

The fix was to issue this at the command prompt:

devenv.exe /resetuserdata

 

 

It seems that my user profile was corrupted, resetting my user profile made the error message go away, and left me free to do what I actually wanted to do with APS.

 

 

 

 

When trying to “Hello World” with mono/.net 4.5, MVC5 in Xamarin studio on Mac OS X 10.10 (Yosemite)

Xamarin provides a “Hello World” of sorts with its vanilla asp.net MVC solution. And, naturally, it works. It also cheats because it doesn’t use a model, it’s just a controller with a view.

So, I decided to try this “Hello World” example by Chad Lung, this one uses a model. And, naturally, this one generates an error message.

System.TypeLoadException
Could not load type ‘System.Web.UnvalidatedRequestValuesBase’ from assembly ‘System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a’.

Description: HTTP 500.Error processing request.
Details: Non-web exception. Exception origin (name of application or object): System.Web.Mvc.
Exception stack trace:
at System.Web.Mvc.FormValueProviderFactory.GetValueProvider (System.Web.Mvc.ControllerContext controllerContext) [0x00000] in :0
at System.Web.Mvc.ValueProviderFactoryCollection.GetValueProvider (System.Web.Mvc.ControllerContext controllerContext) [0x00000] in :0
at System.Web.Mvc.ControllerBase.get_ValueProvider () [0x00000] in :0
at System.Web.Mvc.ControllerActionInvoker.GetParameterValue (System.Web.Mvc.ControllerContext controllerContext, System.Web.Mvc.ParameterDescriptor parameterDescriptor) [0x00000] in :0
at System.Web.Mvc.ControllerActionInvoker.GetParameterValues (System.Web.Mvc.ControllerContext controllerContext, System.Web.Mvc.ActionDescriptor actionDescriptor) [0x00000] in :0
at System.Web.Mvc.Async.AsyncControllerActionInvoker+c__DisplayClass21.b__19 (System.AsyncCallback asyncCallback, System.Object asyncState) [0x00000] in :0

Thoughts.
I’m sure that asp.net error messages could be less terrifying.
I wonder how many other people are using Mono/Xamarin/asp.net MVC on Mac OS X 10? Probably about 3.

I’ve googled the error. Found this: http://curtis.schlak.com/2014/02/04/setup-asp-net-mvc-4-on-monodevelop-4.2.html
Written over 12 months ago and it appears that things have moved on since then (assumption I came too after noticing that
my menu options are slightly different to the ones described in this post).
I have also seen that some people suggest copying a different version of a .dll into my Xamarin solution. Pretty terrifying, considering that my expected result here is a web page with “Hello world” written on it.

Others suggest downgrading to version 4 of asp.net MVC. This sounds like the most “solution-that-I’m-willing-to-try-able” solution.

It’ll have to be another night, though, as I’m off to bed now (completely wasted couple of hours… bloody asp.net).

When selenium webdriver js / protractor won’t click the div that you want it to click

Somebody. Please! Sit down and dedicate as much of your life as you can to improving the documentation for protractor (and while you’re at it you can do selenium webdriver js as well).

In the test that I want to write I have a div, and when I click it a menu (another div that was previously hidden from view) is displayed, at which point I move the mouse to an option in the menu and I click said option.

Typical everyday usage, right? Should be relatively easy to achieve with protractor/WebDriver, right?
Wrong, because it isn’t relatively easy to achieve. It is, in fact, life threateningly difficult to achieve this with protractor/WebDriver.

Here is the (hideous, and clearly not optimal) way in which I’ve managed to get this done.

        it('should show a user config window if user name is pressed in the menu', function() {
            var menuButton = element(by.css("fooBar-menu-bar div.options"));

            var userWindow;

            browser.driver.wait(function(){
                return menuButton.click().then(function(){
                    return browser.waitForAngular().then(function(){
                        return browser.wait(function(){
                            return element(by.id("MenuOptionsContainer")).isPresent().then(function(flag){
                                if (flag === true){
                                    var item = element(by.id("MenuOptionUser"));
                                    browser.actions().mouseMove(item).perform();
                                    item.click();
                                    return browser.wait(function() {
                                        return browser.isElementPresent(by.tagName("fooBar-window")).then(function(flag){
                                            if(flag === true){
                                                userWindow = element(by.tagName("fooBar-window"));
                                                expect(userWindow.isPresent()).toBe(true);
                                                return flag;
                                            } else {
                                                return false;
                                            }
                                        });
                                    });
                                }
                                else{
                                    return false;
                                }
                            });
                        });
                    });
                });
            });
        });

If you’ve read this far then you’re probably trying to get this to work, too. Or, even better you may have found a way to make it work that is far less awful than the above.
Either way I hope you’ll leave a comment.