Friday, October 30, 2015

Paid version of YouTube

If you haven't already received the e-mail from Google YouTube, you should know that Google is now releasing a paid, ad-free version of YouTube called "YouTube Red": https://www.youtube.com/red

It will cost $9.99/month unless you subscribe from an iOS device at which point it will instead cost you $12.99/month!!

The other major benefit it provides is that it allows you to download the YouTube videos for offline viewing.

I am not sure how the emergence of YouTube Red will affect existing browser add-ons that already allow you to download videos from YouTube for offline viewing in a wide variety of formats, but this feature could certainly be beneficial.

If you are like me, you may watch YouTube when the occasion rises.  However, if you are like my wife and numerous other people on this planet, then you probably watch YouTube every free moment that you get.  If you fall into the other category of YouTube viewers, then this paid version of YouTube may very well be a good choice for you.

Only time will tell whether or not YouTube Red succeeds or fails as a subscription-based service...

Subversion vs Team Foundation Server

I recently started working on a project that was using Subversion as its source control repository, therefore, I thought it fitting to discuss the differences between these 2 source control platforms.

In the past, I had used Subversion as my source control system for my own development since it was freely available as a hosted platform.

Since I could use Visual Studio to integrate with Subversion using either Visual SVN or AnkhSVN, it seemed like a suitable choice.

However, a few years later, Microsoft came out with Visual Studio Online ALSO as a free hosted platform for up to 5 users!

As soon as that was released, I immediately switched my source control over to Team Foundation Server/Visual Studio Online.

Why?

For numerous reasons:

  1. Overall, as an overall platform TFS is much, much more robust and integrates far better with Visual Studio than Subversion.  The entire experience of using TFS with Visual Studio is completely seamless. 
  2. A check-in into TFS is significantly faster than a similar check-in into Subversion.
  3. Similarly TFS check-outs are also significantly faster than Subversion check-out operations.
  4. In the past, TFS did not support integration with Windows Explorer as was provided with TortoiseSVN, but recent releases of TFS since TFS 2012/2013 have rectified this issue.
  5. Since TFS is commercially maintained and updated, it is refreshed with newer features and functionality than Subversion over the time span.  In the last few years that I have been using TFS, TFS has evolved significantly and is continually responding to user feedback to enhance its platform both on the server as well as on the client.  During that same timespan, Subversion has made insignificant changes in features and functionality from the end-user perspective (Developer checking in content to Subversion).
  6. TFS provides excellent branching/merging capabilities that completely outshines the branching and merging functionality provided by Subversion.  The merge comparison and merge conflict resolution capabilities available with TFS make use branching and merging with TFS a snap.
  7. TFS provides an overall ALM solution by providing both source control as well as work item tracking.  Subversion, by itself, is simply a source control system.  If you wish to use a work item tracking or issue tracking system, you either have to use something like JIRA or find a hosted Subversion provider which also provides work item tracking features.
  8. TFS provides a built-in code review solution, however, Subversion has  no such feature built-in thereby requiring you to purchase your own code review solution.  If you investigate a Code Review tool such as Upsource for your team, this quickly becomes very expensive: https://www.jetbrains.com/upsource/
  9. If you are hosting your own instance of Subversion using a tool such as VisualSVN Server vs. hosting your own instance of TFS, you will find that the web user experience of TFS completely blows away the web user experience of Subversion.  
Therefore, are there really any remaining compelling reasons to choose Subversion?  Basically, it comes down to price.  If you are a very large company/corporation that needs to host a source control repository without paying any money for it, then Subversion is a suitable choice.  However, it comes at the cost of losing a lot of features and functionality that is provided by a robust source control system such as TFS.

Considering that Visual Studio Online Pricing is extremely affordable now (https://www.visualstudio.com/en-us/products/visual-studio-online-pricing-vs.aspx), unless the company has absolutely no budget to invest in an excellent source control system, TFS should be the logical choice for every organization compared to using Subversion.

Wednesday, October 28, 2015

Setting up Outlook with Google Mail and allowing Less Secure Apps

If you want to set up Outlook with your Google Mail account, you will want to check out this article: https://support.google.com/mail/topic/3398031?hl=en&authuser=1

If you are having trouble with signing-in with your Outlook Email Client, then this article is an absolute must: https://support.google.com/mail/answer/14257?hl=en&ref_topic=3397962

It basically points you to a setting that Google Mail uses which prevents "less secure" clients from accessing Google Mail by default: https://support.google.com/accounts/answer/6010255



Therefore, you need to go into this setting for your Google account and allow "Access for less secure apps": https://www.google.com/settings/security/lesssecureapps






Once you turn on this setting, you should then be able to access your Google Mail using your Outlook email client!!

Using the Sleep command in PowerShell

If you need to introduce a Pause or a Wait in a PowerShell script, you can use the Start-Sleep Cmdlet as outlined here: https://technet.microsoft.com/en-us/library/ee177002.aspx

This Cmdlet was introduced with PowerShell v. 3.0, so you cannot use it with versions of PowerShell older than v. 3.0.

Hopefully you are using PowerShell v. 4.0 or later, so that you can leverage this very useful functionality as part of your PowerShell scripts!

Defining Parameters for PowerShell scripts

If you need to define arguments or parameters for your PowerShell scripts, you will want to take a look at this article: https://technet.microsoft.com/en-us/magazine/jj554301.aspx

Personally, when I define parameters for my PowerShell scripts, I prefer to use the [CmdletBinding()] syntax since it is more clear about the types of parameters as well as the order in which they need to appear.  I also receive meaningful error messages when I fail to pass in a parameter to my PowerShell script.

If you want to further manage your parameters, you can use Default Values for your parameters as outlined here: http://blogs.technet.com/b/heyscriptingguy/archive/2011/05/21/create-and-use-default-values-in-powershell-scripts.aspx

 

Using the Invoke-Sqlcmd Cmdlet in PowerShell

If you want to be able to run SQL Scripts in PowerShell, you will definitely want to use the Invoke-SqlCmd cmdlet as outlined here: https://msdn.microsoft.com/en-us/library/cc281720.aspx?f=255&MSPPError=-2147217396

Unfortunately, the article does not mention how to get the Cmdlet to appear in Intellisense for your PowerShell scripts!

Fortunately, the answer is really rather simple.

You have to add the following PowerShell snap-ins to your PowerShell window:

Add-PSSnapin SqlServerCmdletSnapin100
Add-PSSnapin SqlServerProviderSnapin100

Once you have these loaded, you will be able to use the Invoke-Sqlcmd Cmdlet in your PowerShell scripts!!

Granting Log on as a service rights/privileges using PowerShell

Making changes to Local Security Policy using PowerShell has long been a bane to PowerShell developers since the functionality is not readily exposed through PowerShell cmdlets.

Fortunately, a bright PowerShell developer has come up with a way to make modifications to the Local Security Policy (specifically the "Log on as a service" right) using a handy PowerShell script!

You can download the script from here: https://gallery.technet.microsoft.com/scriptcenter/Grant-Log-on-as-a-service-11a50893

The script requires a parameter for the $accountToAdd.  However, if you do not want to specify a parameter when calling this script and simply want to the use currently logged-in user account, then you can simply change the script to the following:

$accountToAdd = $env:USERNAME

That is all there is to it!

AddCurrentUserAsSQLAdmin can only be specified for SQL Server 2008 R2 Express

I was recently running a SQL Server 2008 R2 installation using an existing ConfigurationFile from a PowerShell script when I suddenly encountered the following error message:


Well, as it turns out, the Configuration File contained this particular line:

; Provision current user as a Database Engine system administrator for SQL Server 2008 R2 Express.

ADDCURRENTUSERASSQLADMIN="True"


Based on the advice for creating a ConfigurationFile.ini file for SQL Server outlined in this article (http://mycodelog.com/2010/09/28/sqlsilent/), I was able to determine that I needed to remove this particular line from my ConfigurationFile.ini file.


Once I did this and re-ran my setup, I was able to successfully install SQL Server without this error message!



Tuesday, October 27, 2015

Difference between Write-Host and Write-Output in PowerShell

I have been using PowerShell for quite a few years and I have never been very clear about their differences so I decided to research it further.

As it turns out, these 2 articles do a very good job of explaining the differences between these 2 very similar-looking commands:

http://windowsitpro.com/windows/write-output-or-write-host-powershell

http://www.jsnover.com/blog/2013/12/07/write-host-considered-harmful/ 

Working with Environment Variables in PowerShell

If you want to learn how to work with Environment Variables in PowerShell, you will definitely need to check out this article: https://technet.microsoft.com/en-us/library/ff730964.aspx

Working with XML in PowerShell

If you have to work with XML in PowerShell, you may be looking for guidance on how to manipulate XML files using PowerShell.

Fortunately, there is a very good article on manipulating XML using PowerShell here: http://powershell.com/cs/blogs/ebookv2/archive/2012/03/21/chapter-14-xml.aspx

I have found these articles very useful on manipulating XML with PowerShell as well:

https://www.simple-talk.com/sysadmin/powershell/powershell-data-basics-xml/

http://powershell.com/cs/blogs/tobias/archive/2009/02/02/xml-part-2-write-add-and-change-xml-data.aspx

http://blogs.technet.com/b/heyscriptingguy/archive/2014/06/11/use-powershell-to-explore-structure-of-xml-document.aspx

Monday, October 26, 2015

Windows Installer Tools

If you are looking for a tool to perform your Windows installation, these are the common tools used in the Windows industry:

  1. InstallShield  - http://www.flexerasoftware.com/producer/products/software-installation/installshield-software-installer/  
  2.  Advanced Installer - http://www.advancedinstaller.com/
  3. InstallAware - http://www.installaware.com/
  4. Nullsoft Scriptable Install System - http://sourceforge.net/projects/nsis/
  5. Inno Setup - http://www.jrsoftware.org/isinfo.php
  6. WiX Toolset - http://wixtoolset.org/

  • InstallShield is by far the industry standard and probably the most widely used installation tool today.  InstallShield ships a free version with the Visual Studio IDE called "InstallShield LE".  It has most features that you can use for building a sophisticated installation package and overall the IDE is very easy to use.  Unfortunately, though, InstallShield is not very receptive to user feedback and suggestions and many very useful feature suggestions may not see the light-of-day for several years (if ever).  In addition, InstallShield is one of the most expensive Windows Installer tools out there.
  • Advanced Installer is a great alternative to InstallShield and is rapidly becoming a strong competitor to InstallShield in its toolset offering.  Unlike InstallShield, it rapidly incorporates user feedback into its release cycle, but lacks much of the automation capabilities of its InstallShield counterpart.  Advanced Installer also offers a free version available for separate download which offers very basic Windows Installer functionality.
  • InstallAware was originally created by someone who left InstallShield to develop a better installation packaging IDE.  InstallAware's approach is very different overall than InstallShield and Advanced Installer by providing a much more script-oriented approach to installation as well as the ability to switch back and forth between the 2 methods of editing the installation package.  This approach more closely aligns with how the old Wise Installation System used to work.
  • Nullsoft Scriptable Install System - I personally do not have much experience with Nullsoft other than knowing that it is freeware.
  • Inno Setup - Inno Setup is another Windows Installer tool which is provided as freeware.
  • WiX Toolset - WiX was developed by Microsoft and made freely available to the community.  WiX is based on a completely XML-Driven script to generate the installation package.  Sadly, the WiX Toolset team does not provide a GUI for creating WiX projects, thereby leaving it up to 3rd party vendors and the open-source community.  WiXEdit is an open-source project which has created a GUI IDE for creating and editing WiX projects: http://wixedit.sourceforge.net/.  In addition, there is a commercial offering called MSI Factory that provides a much better GUI experience for creating and editing WiX projects: http://www.indigorose.com/products/msi-factory/   Despite having these tools available, they still considerably lag behind competitors such as InstallShield and Advanced Installer for overall features and functionality.

Friday, October 23, 2015

Exception calling ReadKey with 1 argument(s): The method or operation is not implemented

I was recently developing and executing a PowerShell script when I suddenly encountered the following error message:

Exception calling "ReadKey" with "1" argument(s): "The method or operation is not implemented."

I was very confused by this error message since this was documented as the recommended method of pausing a PowerShell script: http://blogs.technet.com/b/heyscriptingguy/archive/2013/09/14/powertip-use-powershell-to-wait-for-a-key-press.aspx

Unfortunately, what was not mentioned in the article was that it does not work in the PowerShell ISE!

Since I develop ALL of my PowerShell scripts in the PowerShell ISE, this functionality seemed to frustrate me immensely.

I was able to find a workaround that also worked in the PowerShell ISE by following this article: https://adamstech.wordpress.com/2011/05/12/how-to-properly-pause-a-powershell-script/

However, it still irks me that Microsoft has not found a reliable "pause" function that works just as well in the PowerShell console as in the PowerShell ISE.

If you would like Microsoft to remedy this issue for the next release of PowerShell, you should vote for this Microsoft Connect feedback item: https://connect.microsoft.com/PowerShell/feedbackdetail/view/1934336/provide-a-true-pause-function-in-powershell-that-works-both-in-powershell-console-and-powershell-ise

Thursday, October 22, 2015

Calling a PowerShell function with multiple parameters

I don't usually write functions when I write my PowerShell scripts because they are often quick scripts to perform one or a few operations for administration.

However, I recently was assigned a task to write a PowerShell script that would update a large number of nodes in an XML file and I suddenly found myself with a need to write a PowerShell function!

Of course, writing the function was easy enough, however, when it came to actually CALLING the function, I ran into quite a bit of difficulty due to PowerShell's default behavior.

Since PowerShell interprets comma-delimited arguments as an array, when you pass a comma-delimited set of arguments to a PowerShell function, the function is not called correctly!

Instead, you have to "space delimit" your arguments to your PowerShell function or else use named arguments.

Therefore, instead of calling your function in the same manner as you would do in other languages such as C#, you would use this syntax in its place:

Update-XMLNode $xmlFile "xmlnodename" "xmlnodevalue"





Wednesday, October 21, 2015

Reinstalling Sitefinity Modules

I was recently experiencing problems with my Libraries module in Sitefinity, so I decided to Deactivate and Reactivate the Libraries module based on this article (http://docs.sitefinity.com/activate-and-deactivate-modules)to see if that would rectify the problem.

Unfortunately, that had no effect on fixing my issues.  So, after posting to a Sitefinity forum, I received the recommendation to go ahead and uninstall and reinstall the affected module.

This not only failed to work, it put the Libraries module in a "Failed" state thus making the module completely unusable at all!


Therefore, I was only left with the remaining option of deleting the module altogether.  What I did not know, though, was that there is no built-in method in the User Interface of Sitefinity to do a "clean" re-install of System Modules!

Lucky for me, the Sitefinity team keeps it pretty simple by storing this information in .config files.  In this case, the name of the Application Modules are stored in the SystemConfig.config file which is located beneath the App_Data\Sitefinity\Configuration folder at the root of the Sitefinity website.

I opened up the SystemConfig.config file and found this line under the applicationModules root:

<remove name="Libraries" />



I then removed this line from the SystemConfig.config file and re-started my Sitefinity website only to receive this dreaded error once again:




Well, I decided to look at the SystemConfig.config file once more and I now found this line in the SytemConfig.config file this time:



<add startupType="Disabled" errorMessage="Batch insert failed: Telerik.OpenAccess.RT.sql.SQLException: Violation of PRIMARY KEY constraint 'pk_sf_presentation_data'. Cannot insert duplicate key in object 'dbo.sf_presentation_data'. The duplicate key value is (db0d628c-5471-4197-a94f-000000000003).&#xD;&#xA;The statement has been terminated. ---&gt; System.Data.SqlClient.SqlException: Violation of PRIMARY KEY constraint 'pk_sf_presentation_data'. Cannot insert duplicate key in object 'dbo.sf_presentation_data'. The duplicate key value is (db0d628c-5471-4197-a94f-000000000003).&#xD;&#xA;The statement has been terminated.&#xD;&#xA;   at System.Data.Common.DbDataAdapter.UpdatedRowStatusErrors(RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo[] batchCommands, Int32 commandCount)&#xD;&#xA;   at System.Data.Common.DbDataAdapter.UpdatedRowStatus(RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo[] batchCommands, Int32 commandCount)&#xD;&#xA;   at System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows, DataTableMapping tableMapping)&#xD;&#xA;   at System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows)&#xD;&#xA;   at OpenAccessRuntime.Intellitrace.Update(String id, DbDataAdapter adapter, DataRow[] rows)&#xD;&#xA;   at Telerik.OpenAccess.RT.sql.Batch.Perform(String connId, DbDataAdapter adapter, DataRow[] rows)&#xD;&#xA;   at Telerik.OpenAccess.Runtime.Logging.LoggingDbCommand.ExecuteBatch(DbDataAdapter adapter, DataRow[] rows, Batch batch)&#xD;&#xA;   at Telerik.OpenAccess.RT.Adonet2Generic.Impl.CommandImp.Execute(DbDataAdapter adapter, DataRow[] rows, Batch batch)&#xD;&#xA;   at Telerik.OpenAccess.RT.Adonet2Generic.Impl.StatementImp.Execute(DbDataAdapter adapter, DataRow[] rows, Batch batch)&#xD;&#xA;   --- End of inner exception stack trace ---&#xD;&#xA;   at Telerik.OpenAccess.RT.Adonet2Generic.Impl.StatementImp.Execute(DbDataAdapter adapter, DataRow[] rows, Batch batch)&#xD;&#xA;   at OpenAccessRuntime.Relational.conn.LoggingStatement.Execute(DbDataAdapter adapter, DataRow[] rows, Batch batch)&#xD;&#xA;   at Telerik.OpenAccess.RT.sql.Batch.ExecuteBatchDataTable(Boolean withInfo)&#xA;INSERT INTO [sf_presentation_data] ([voa_class], [app_name], [dta], [data_type], [date_created], [id], [last_modified], [nme], [ownr], [theme], [voa_version], [area_name], [condition], [item_id], [control_type], [embedded_template_name], [friendly_control_name], [is_different_from_embedded], [name_for_developers], [resource_assembly_name], [resource_class_id]) VALUES (@p0, @p1, @p2, @p3, @p4, @p5, @p6, @p7, @p8, @p9, @p10, @p11, @p12, @p13, @p14, @p15, @p16, @p17, @p18, @p19, @p20)&#xA;Batch Entry 0 (set event logging to all to see parameter data)" name="Libraries" />


I removed this line and instead replaced it with the following:



<add version="8.1.5820.0" name="Libraries" />

Making this change finally solved my problem with the Libraries Sitefinity Module!  Hurrah!!



Saturday, October 17, 2015

Importing cookies from Internet Explorer to Mozilla Firefox

If you launch Mozilla Firefox for the very first time after a fresh installation, you will notice that you are presented with a wizard that allows you to import cookies from other browsers such as Internet Explorer.

However, what happens when you need to import cookies from another browser after Mozilla Firefox has already been running for some time?

Unfortunately, there is no built-in method in the Mozilla Firefox browser that allows you to do that.  Fortunately, though, that is why they have Add-ons/Extensions!

You can download the Cookies Import/Export Add-on from here: https://addons.mozilla.org/en-us/firefox/addon/cookies-exportimport/

This allows you to easily import the Cookies that are exported by Internet Explorer.

Very handy tool!!

Friday, October 16, 2015

Changes to Authorize.Net Urls

If you currently work with Authorize.Net, you may have received an e-mail indicating that Authorize.Net is changing all of their Urls in the coming months for payment processing.

Therefore, if you have not already done so, you will want to change the Urls to one of the following new Urls:


To read more about these Url changes for Authorize.Net, you can check out this FAQ here: http://www.authorize.net/support/akamaifaqs/?utm_campaign=Akamai%20Initial%20Email%20to%20Developers%20and%20Partners.ht&utm_medium=email&utm_source=Eloqua#newurls

Monday, October 12, 2015

Free Toad Data Modeler

If you are working with small databases (25 objects or less), you can use the Freeware edition of Toad Data Modeler here: http://www.toadworld.com/m/freeware/553

If you want to try out the full functionality of Toad Data Modeler, you can download a trial version of Toad Data Modeler from here:http://www.toad-data-modeler.com/download/  or here: https://software.dell.com/register/54826/

Free ERWin Data Modeling software

If you have done any data modeling for any major organization, chances are that you have used ERWin Data Modeler at some point in time.

However, ERWin is a very expensive tool for independent consultants or small businesses, therefore, many companies look for cheaper alternatives such as Microsoft Visio.

Well, there is good news for those companies with relatively small databases!

Computer Associates now is offering a free version of ERWin called CA ERWin Data Modeler Community Edition!  http://erwin.com/products/data-modeler/community-edition

This version has a limit of 25 objects as well as requiring to re-download the software every 6 months or so to renew the license, but for being able to leverage the full power and functionality that accompanies CA ERWin Data Modeler is well worth it!

You can download CA ERWin Data Modeler Community Edition from here: https://www.ca.com/us/register/forms/ca-erwin-data-modeler-community-edition-evaluation-software.aspx

Thursday, October 8, 2015

This request has been blocked because sensitive information could be disclosed to third party web sites when this is used in a GET request. To allow GET requests, set JsonRequestBehavior to AllowGet.

I was recently working on implementing some Kendo UI functionality for my ASP.NET MVC Web Application, when I encountered the following error message:






Well, as it turns out, the code sample provided on the Telerik Kendo UI Demos site, did not accommodate for this error message.

This Enumeration is documented in this MSDN article: https://msdn.microsoft.com/en-us/library/system.web.mvc.jsonrequestbehavior%28v=vs.118%29.aspx

Fortunately, after reading the error message more carefully and doing a bit of searching on Google, I was able to quickly discover that I needed to change the following line of code in my ASP.NET MVC Controller from this:
public ActionResult Customers_Read([DataSourceRequest]DataSourceRequest request)

{

    return Json(GetCustomers().ToDataSourceResult(request));

}



instead to the following code snippet:



public ActionResult Customers_Read([DataSourceRequest]DataSourceRequest request)

{

    return Json(GetCustomers().ToDataSourceResult(request), JsonRequestBehavior.AllowGet);

}


As soon as I did that, my issue was resolved!

Adding Telerik Kendo UI to an ASP.NET MVC Web Application

If you are just starting off with Kendo UI and ASP.NET MVC, then it might be easier to create a brand new ASP.NET MVC Application using the "Telerik MVC Web Application" project template provided to you when you install UI for ASP.NET MVC.

However, if you already have an existing ASP.NET MVC Web Application and are looking to leverage Kendo UI in your application, there are a few steps to take into account:


  1. If you are using an existing ASP.NET MVC Layout file, the bundling of the jQuery Libraries occurs at the bottom of the file.  Unfortunately, this interferes with the functionality of Kendo UI (even if you add the Kendo UI scripts after the jQuery Library).  Therefore, you need to either use a custom Layout file or you need to move the bundling of the jQuery Library to the top of the Layout file.
  2. If you are using bundling in your ASP.NET MVC application, since Kendo UI only ships with minified versions, you will need to set BundleTable.EnableOptimizations = false; in the BundleConfig.cs file.
  3. Now, you have to configure your solution/web application project to be able to use the Kendo UI libraries.
  4. You will need to add the Kendo.MVC assembly as a project reference
  5. You will need to add all of the Kendo CSS files to the Content\kendo directory of your ASP.NET MVC project.
  6. You will need to add all of the Kendo Script files to the Scripts\kendo directory of your ASP.NET MVC project.
  7. In order to get appropriate Intellisense for your development in Views, you will need to add the Kendo.Mvc.UI namespace to BOTH your Views Web.config file and your root Web.config file (under the pages/namespaces element)
  8. If you are using the Kendo MVC HTML Helpers, you will also need to add the @using Kendo.Mvc.UI imports statement to the top of the Razor View files.
Once you complete these above items, you should be ready to be able to use Kendo UI within your existing ASP.NET MVC web application project.

Alternatively, you can now use the Telerik Configure Project Wizard as follows:

  1. Select or highlight the ASP.NET MVC project you want to target for Kendo UI support in Visual Studio Solution Explorer
  2. From the Telerik-->UI for ASP.NET MVC menu, select Configure Project
  3. Proceed through the wizard until your project is upgraded with Kendo UI support


ADFS support coming to SQL Server 2016!

If you have used any version of SQL Server Analysis Services or Reporting Services in the past, you may already be well aware of the fact that neither of theses services currently support integration with ADFS (Active Directory Federation Services).

However, with the release of SQL Server 2016, ADFS support will finally be coming to SQL Server!

If you track this Connect feedback item (https://connect.microsoft.com/SQLServer/feedback/details/1340165/provide-adfs-support-for-ssas-and-ssrs), you will see the comments from Microsoft:

Thanks for your feedback. ADFS support, aka claim authentication, is a frequently requested feature. It'll come some time after SQL Server 2016 ships. 

So Microsoft is offering yet another reason for us to upgrade our existing installations of SQL Server 2012 and SQL Server 2014 to SQL Server 2016!

If you are like me, you will be eagerly anticipating this capability since it will provide true SSO support for integration with several Microsoft products such as SharePoint, Dynamics CRM and Project Server.  If Team Foundation Server 2015 also adds support for ADFS, that will sweeten the deal even further! 

The type Expression<> is defined in an assembly that is not referenced.

I recently had to upgrade an older ASP.NET MVC Web Application over to MVC 5.

Since Visual Studio 2015 was recently released, I decided to use VS 2015 to perform the upgrade.

Well, after I had gone through the standard operations of upgrading all of the files in the project, I was suddenly faced with the following error message when attempting to use any Html Helpers such as @Html.LabelFor or @Html.TextBoxFor.  All of the other Html Helpers were working and intact, but these were not showing up in Visual Studio Intellisense!

The type 'Expression<>' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.




Well, I already had a reference to System.Core in my project, so why was this error still appearing?
 
I decided to do some more testing and I discovered that NEW ASP.NET MVC projects did not face this problem!!  It was only an issue with my upgraded project!!

Fortunately, I came across this StackOverflow article which points out a resolution: http://stackoverflow.com/questions/31599087/vs-2015-intellisense-assembly-not-referenced-error

As it turns out, I needed to add some assembly references to my Web.config file as follows:

<compilation debug="true" targetFramework="4.5">
    <assemblies>
        <add assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <add assembly="System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <add assembly="Microsoft.CSharp, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
        <add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />   
        <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Helpers, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.WebPages, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    </assemblies>
</compilation>


Once I did that, my Intellisense for these Html Helpers started working again!  Woo hoo!

Google Chrome debugging tools for Kendo UI

If you use Google Chrome like most developers nowadays, you will be happy to know that Telerik offers a free Google Chrome Extension that allows you to more easily debug your Telerik Kendo UI applications!

You can download it from the Google Chrome Web Store here: https://chrome.google.com/webstore/detail/telerik-kendo-ui-chrome-i/npcmgpnfknjmndbbakdhchgibaajnlpe?hl=en

New Bootstrap Themes site

If you haven't already read the announcement, the makers of Bootstrap have released a brand new Bootstrap Themes site that provides multiple use licenses!

You can check out the new Bootstrap Themes site here: http://themes.getbootstrap.com/collections/all

Wednesday, October 7, 2015

ASP.NET Captcha control support for ValidationGroups and ValidationSummary

If you have used various Captcha controls for ASP.NET in the past, you may have run into roadblocks preventing the Captcha control from being fully usable.

One of the major roadblocks with nearly every ASP.NET Captcha control on the market today is that they do not have integrated support for the ASP.NET Validation Controls, thus making it it difficult to fully integrate validation logic with these Captcha controls.

Well, fortunately, 2 vendors now have Validation support for their Captcha controls!

  1. Telerik RadCaptcha: http://demos.telerik.com/aspnet-ajax/captcha/examples/validationsummary/defaultcs.aspx
  2. Obout Captcha: http://www.obout.com/Obout.Ajax.UI/Captcha/examples/ValidationSummary.aspx
I have used the Telerik RadCaptcha control for several years and the Validation support is an extremely new and recent addition to the RadCaptcha control.  Therefore, if you are currently using the RadCaptcha control, you will want to make sure that you update to the latest version of the Telerik ASP.NET for AJAX Controls.

If you have not used the Obout controls in the past, you will be glad to know that they are FREE!  You can download the full suite of available controls from here: http://www.obout.com/inc/download.aspx

Excluding NuGet Packages from Team Foundation Version Control

In the past, if you want to exclude NuGet packages from Team Foundation Server Version Control, you would need to make use of the NuGet.config file.

However, you now also have the option of using a .tfignore file as outlined in this NuGet article:  https://docs.nuget.org/consume/package-restore

This MSDN article further outlines how to structure and use a .tfignore file when adding files to Team Foundation Version Control: https://msdn.microsoft.com/en-us/library/ms245454.aspx

Changes to Windows Azure PowerShell coming soon!

If you have worked with a recent version of Azure PowerShell, you may have noticed that they have changed the underlying commands to require Resource Management arguments so that many Azure PowerShell scripts no longer work!

If you are currently experiencing this problem with a recent version of Windows Azure PowerShell, you have 2 options:

  1. Use Switch-AzureMode to switch to the Service Management version of Azure PowerShell.
  2. Prefix your commands in the following manner: Azure\Get-AzureVM 
Well, with the upcoming release of Azure PowerShell, you will not even need to do that any longer since Switch-AzureMode is being deprecated!  https://github.com/Azure/azure-powershell/wiki/Deprecation-of-Switch-AzureMode-in-Azure-PowerShell

Therefore, if you have existing older scripts which use Get-AzureVM, you can now use it directly instead of prefixing it with Azure\ or using Switch-AzureMode.

So, your new Azure PowerShell scripts will look something like this:


Get-AzureVM - Azure Service Management
Get-AzureRmVM - Azure Resource Manager


This new version of Azure PowerShell is expected to be released tomorrow on Oct. 8th!

Thursday, October 1, 2015

Performing a Team Foundation Server Merge Operation

If you have ever want to learn how to perform a TFS Merge Operation using Visual Studio (and not the command line), this is how you do it:










Once you are completed with the Merge operation, you will have to resolve any Conflicts which arise due to the Merge operation and you have the following options to choose from:


  • Merge Changes in Merge Tool
  • Keep Target Branch Version
  • Take Source Branch Version
If you intend on merging changes in a Merge Tool, I highly recommend a 3rd party merging tool such as Beyond Compare (http://scootersoftware.com/) to help you perform the merge operations!  

That is all there is to it!