private string GetSliceCompilerPath(Microsoft.Build.Evaluation.Project project, string iceHome)
        {
            ThreadHelper.ThrowIfNotOnUIThread();
            string compiler = MSBuildUtils.IsCSharpProject(project) ? "slice2cs.exe" : "slice2cpp.exe";

            if (!string.IsNullOrEmpty(iceHome))
            {
                if (File.Exists(Path.Combine(iceHome, "cpp", "bin", compiler)))
                {
                    return(Path.Combine(iceHome, "cpp", "bin", compiler));
                }

                if (File.Exists(Path.Combine(iceHome, "bin", compiler)))
                {
                    return(Path.Combine(iceHome, "bin", compiler));
                }
            }

            string message = "'" + compiler + "' not found";

            if (!string.IsNullOrEmpty(iceHome))
            {
                message += " in '" + iceHome + "'. You may need to update Ice Home in 'Tools > Options > Ice'";
            }
            else
            {
                message += ". You may need to set Ice Home in 'Tools > Options > Ice'";
            }
            OutputPane.OutputTaskItemString(
                message,
                EnvDTE.vsTaskPriority.vsTaskPriorityHigh,
                "BuildCompile",
                EnvDTE.vsTaskIcon.vsTaskIconCompile,
                compiler,
                0,
                message);
            return(null);
        }
 public static bool IsCSharpProject(IVsProject p)
 {
     return(ProjectUtil.GetProjecTypeGuid(p).Equals(csharpProjectGUID) &&
            MSBuildUtils.IsCSharpProject(p.GetMSBuildProject(true)));
 }