Systems this was reproduced on: Windows 8.1 x64 and Windows 7 x64.
SharpDevelop versions tried: both 4.4.1 and 5beta2.
How to reproduce:
On the fresh Windows install Windows SDK 8.1 from http://msdn.microsoft.com/en-us/windows/desktop/bg162891.aspx. (instead of fresh install you can just delete all Windows SDKs)
Create new Windows Aplication solution. Convert its target framework to .NET Framework 2.0 or .NET Framework 3.5. Try to build.
Expected result: successful build.
Result: Error MSB3091: Task failed because "resgen.exe" was not found, or the correct Microsoft Windows SDK is not installed...
Temporary solution that works for me: copy registry tree at HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v8.1A to the HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v8.0A.
Permament solution as far as I can understand: in the file src\Main\Core\Project\Src\Services\FileUtility\FileUtility.cs add something like this to the #region InstallRoot Properties:
static string windowsSdk81InstallRoot = null;
/// <summary>
/// Location of the .NET 4.5.1 SDK (Windows SDK 8.1) install root.
/// </summary>
public static string WindowsSdk81NetFxTools {
get {
if (windowsSdk81InstallRoot == null) {
windowsSdk81InstallRoot = GetPathFromRegistryX86(@"SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.1A\WinSDK-NetFx40Tools", "InstallationFolder") ?? string.Empty;
}
return windowsSdk81InstallRoot;
}
}
And corresponding code to the public static string GetSdkPath(string exeName).