Friday, 22 June 2012

NuGet references in solutions

If a project is shared between two solutions, and that project uses NuGet, then you have to ensure that the NuGet.targets file is added to both solutions or the project will fail to load in the solution that does not have it.

To solve the problem on the failed solution, right click the solution and select "Enable NuGet Package Restore". This will create the .nuget folder and the NuGet.targets file.

ICE errors with WIX on Win 7 x64

If you build a WIX project in VS.NET2010 on Windows 7 x64, you can get assorted ICE errors and 'failed to delete temporary directory' errors.

The solution is to run VS.NET as administrator.

Wednesday, 6 June 2012

WCF Data Services - non-unique DataServiceKey attribute causes strange results

I had a data service that was returning an IQueryable of a custom type:

[WebGet]
public IQueryable<VolumeEntry> GetTradeVolumes(int tranNum)

[DataServiceKey("StartTimeUtc")]
public class VolumeEntry
{
    public DateTime StartTimeUtc { getset; }
    public DateTime EndTimeUtc { getset; }
    public int VolumeType { getset; }
    public double Quantity { getset; }
}

The server was sending the data in the correct form however the client was returning the wrong results. It returned the correct number of results but the VolumeType and Quantity fields were wrong - they always contained the same values.

The problem was that the custom type was actually keyed on StartTimeUtc AND VolumeType, not just StartTimeUtc as was marked with the DataServiceKey attribute.

Once modified the client returned the right results.

[DataServiceKey("StartTimeUtc""VolumeType")]
public class VolumeEntry
{
    public DateTime StartTimeUtc { get; set; }
    public DateTime EndTimeUtc { get; set; }
    public int VolumeType { get; set; }
    public double Quantity { get; set; }
}

Friday, 1 June 2012

''.OnContextCreated()' is abstract but it is contained in non-abstract class ''

You get this error if you create a WCF data service, but do not expose any IQueryable<T> or IEnumerable<T>. See here.

Thursday, 31 May 2012

firefox

Avoid IE Tab Plus 2.0.0.0 by ietab.com - it inserts Google Adwords at the top of your search results - just as you are going to click on them. You end up clicking on the advert instead! Annoying.

Saturday, 26 May 2012

Setting up Minecraft with Bukkit


After Bukkit is installed a player is not able to build. Any block that is placed is removed and the right-mouse button doesn't work. To be able to build after installing Bukkit, it is important to install the PermissionsBukkit plugin.

Once installed run the command:

permissions player setperm <Player> permissions.build true

to see what permissions another player has, use:

permissions dump <Player>

Another plugin worth installing is  HomeSpawnPlus. This allows you to set the spawn point and the home command. Copy the HomeSpawnPlus.jar into the plugins folder.

Permissions include:

hsp.command.spawn
hsp.command.sethome
hsp.command.home

permissions player setperm <Player> bukkit.command.give true

Other commands
/mvm set respawn <World>
/mv tp MinerAndy2012 <World>
/mv conf firstspawnoverride true and /mv conf firstspawnworld myworld
permissions player setperm <Player> multiverse.access.charlie true

Useful plugins:
lockette -  allows you to make doors private.
HomeSpawnPlus
Multiverse-Core
PermissionsBukkit

Permissions that must be set for my server:
http://wiki.bukkit.org/CraftBukkit_commands
permissions player setperm <Player> permissions.build true - Needed for all players!
permissions player setperm <Player> bukkit.command.give true  - allows too many items
permissions player setperm <Player> bukkit.command.teleport true - allows teleport
permissions player setperm <Player> bukkit.command.op.give true - grants the player op status

The permissions are set in C:\Minecraft\plugins\PermissionsBukkit\config.yml

Thursday, 24 May 2012

Debugging Endur

You may need to attach to one of the following proceses:

screng.exe (Script Engine)
master.exe (Main application or the Windows service)
ins.exe (Trading desktop)