Recently I helped a client of Falafel’s get up and running with Continuous Integration using CCNET v1.5. They’re running Team Foundation Server 2010 using TFS for their source repository and fortunately CruiseControl.NET includes a source control provider for TFS. Having tried this configuration and successfully we configured the server but ran into the following error:
Source control failure (GetModifications): Unable to find TF.exe and it was not defined in Executable Parameter
Reviewing the code for the TFS plugin we can see why this happens for 2010:
private string ReadTFFromRegistry() { string registryValue = null; registryValue = registry.GetLocalMachineSubKeyValue(VS2008_64_REGISTRY_PATH, VS_REGISTRY_KEY); if (registryValue == null) { registryValue = registry.GetLocalMachineSubKeyValue(VS2005_64_REGISTRY_PATH, VS_REGISTRY_KEY); } if (registryValue == null) { registryValue = registry.GetLocalMachineSubKeyValue(VS2008_32_REGISTRY_PATH, VS_REGISTRY_KEY); } if (registryValue == null) { registryValue = registry.GetLocalMachineSubKeyValue(VS2005_32_REGISTRY_PATH, VS_REGISTRY_KEY); } if (registryValue == null) { Log.Debug("Unable to find TF.exe and it was not defined in Executable Parameter"); throw new Exception("Unable to find TF.exe and it was not defined in Executable Parameter"); } return Path.Combine(registryValue, TF_EXE); }
As of this writing the CCNET documentation does not include the Executable parameter for this source control provider though the fix is easy enough.
So what is the fix? How can I get this to work with the right team project under the right collection?
Allen, refer to my previous post, I think it might help.