Tuesday, May 7, 2013

The "GenerateResource" Task Failed Unexpectedly

Shortly after setting up a RAM disk using the freeware version of Dataram RAMDisk to see whether Visual Studio 2010 might compile a huge solution faster, I began getting the following errors after relocating the system's temp files to the root of the RAM drive:
The "GenerateResource" task failed unexpectedly.
System.TypeInitializationException: The type initializer for 'Microsoft.Build.Utilities.FileTracker' threw an exception. ---> System.NullReferenceException: Object reference not set to an instance of an object.

I dug around and found numerous references to existing bug reports and a few workarounds. I tried unsetting the readonly file system attribute in my solution folder, setting the GenerateResourceNeverLockTypeAssemblies property in my project file to true or false to downgrade some security parameters, but ultimately it was the top answer here that did the trick.

I had set the environment variables for the RAM drive initially to just R:\, referencing the root of the drive. Apparently VS 2010 doesn't like this, so I simply created a new folder on my ram disk named TEMP, and then updated the environment variables accordingly:




Just to rule it out, and also because I hadn't rebooted Windows in a while, I also opened Control Panel => Programs and Features, and performed a Repair on Microsoft .NET Framework 4 Client Profile just in case the framework files might've gotten corrupted somehow, and then restarted.

Problem solved! Now on to see whether Joseph Fluckiger's experimentation which returned lukewarm results on performance of building to a RAM disk holds water for a solution with, say, dozens of projects.



Wednesday, February 20, 2013

Left and Right Double Quotation Marks

Often I find myself wanting to use left and right double quotation marks rather than the generic ones.

Especially if you happen to be quoting someone, it adds a touch of class to use these rather than their boring unicode counterparts. This site outlines the differences between the two, and for convenience I'm posting each here so that either one can be easily copied and pasted:
 
 
 Left quotation mark. Hold down ALT and hit 0147 on your numeric keypad.

 Right quotation mark. Hold down ALT and hit 0148 on your numeric keypad.


Below is as an animated GIF showing each of the left and right double quotation marks as well as the plain old unicode ones in CharMap, and keystrokes you can use to type the former if you're so inclined:

A handy animated GIF outlining them all.
 


 

Saturday, February 16, 2013

Block Reddit Ads, Part Deux

In my previous post I outlined a method to block Reddit ads. 

It worked, until I tried hitting Reddit early this morning.

It appears that the ad structure is slightly different, now the following element hiding rule in the Element Hiding Helper of AdBlock Plus should do the trick:

reddit.com###siteTable_organic.organic-listing


This ought to work until they decide to change up their site structure once again. 

UPDATE: Apparently, the developer of AdBlock Plus has decreed that Reddit ads will from this point forward be whitelisted, stating that Reddit ads meet their 'acceptable ads' guidelines, necessitating custom rules like I describe above. To me, this is a bad idea, especially since even bigtime advertisers like Yahoo, Fox, and Google have inadvertently helped malware procreate through ads.





Friday, February 15, 2013

Block Reddit Ads

Reddit recently introduced an update to their ads which eludes AdBlock Plus.




Instead of a simple element ID denoted as a sponsored link, their page uniquely identifies it according to a link to the comments for a given ad posting. Ads annoy me, and as my previous post on blocking Reddit ads attests, even their minimal advertising is an unwanted distraction.

However, using the Element Hiding Helper, it's trivial to block the new ad scheme. If you're already familiar with hiding elements, all you need to do is add an element hiding rule like this:
reddit.com###siteTable_promoted > *

If you want a more detailed procedure which might help you block other unwanted web content, read on.

In Firefox, tap the ALT key to display the menu, then click Tools => AdBlock Plus => Select an element to hide (or alternatively hit CTRL-SHIFT-F3). This brings up the element selection dialog that lets you pick and choose items on the web page to hide.



Now a red selection box will outline and identify elements of the page as your mouse cursor hovers over them. If you hover over the sponsored link area, you should see something like this:



Note the entire ad post is surrounded, with a tag in the lower-left indicating the post is within a DIV element. Click on the tag for this area, and you'll open the Compose element hiding rule dialog.



This is the Basic view, but we need to go deeper, so click on the Advanced view button.


By default, when you clicked to select the ad, the element hider chose that specific DIV element. However, blocking this won't do, as each ad will have a unique identifier (in this case, 17aahm) which will foil the filter. 

To get around this, first click on the checkbox beside the option that begins "class: thing id-..." to uncheck it, and then click on the DIV in the list which is the parent to this one, just above the default selection. Then, click the checkbox beside siteTable_promoted so that it's checked, and then click the Add element hiding rule button.





Now the ad should be hidden, either immediately or after your next refresh of Reddit's page.