internal RoslynProjectData(RoslynProjectKind effectiveKind, RoslynProjectKind declaredKind, string declaredValue) { Debug.Assert(declaredKind == RoslynProjectKindUtil.GetRoslynProjectKind(declaredValue).Value); EffectiveKind = effectiveKind; DeclaredValue = declaredValue; DeclaredKind = declaredKind; }
internal RoslynProjectData GetRoslynProjectData() { var typeElement = FindSingleProperty("RoslynProjectType"); if (typeElement != null) { var value = typeElement.Value.Trim(); var kind = RoslynProjectKindUtil.GetRoslynProjectKind(value); if (kind == null) { throw new Exception($"Unrecognized RoslynProjectKind value {value}"); } return(new RoslynProjectData(kind.Value, kind.Value, value)); } else { var outputType = FindSingleProperty("OutputType"); switch (outputType?.Value.Trim()) { case "Exe": case "WinExe": return(new RoslynProjectData(RoslynProjectKind.Exe)); case "Library": return(new RoslynProjectData(RoslynProjectKind.Dll)); default: throw new Exception($"Unrecognized OutputType value {outputType?.Value.Trim()}"); } } }
internal bool TryGetRoslynProjectData(out RoslynProjectData data, out string error) { data = default(RoslynProjectData); error = null; var typeElement = FindSingleProperty("RoslynProjectType"); if (typeElement != null) { var value = typeElement.Value.Trim(); var kind = RoslynProjectKindUtil.GetRoslynProjectKind(value); if (kind == null) { error = $"The value {value} is illegal for element <RoslynProjectType>"; return(false); } data = new RoslynProjectData(kind.Value, kind.Value, value); return(true); } else { var outputType = FindSingleProperty("OutputType"); switch (outputType?.Value.Trim()) { case "Exe": case "WinExe": data = new RoslynProjectData(RoslynProjectKind.Exe); return(true); case "Library": data = new RoslynProjectData(RoslynProjectKind.Dll); return(true); default: error = $"The value {outputType?.Value.Trim()} is not a recognized value of OutputType"; return(false); } } }