Exemple #1
0
 internal RoslynProjectData(RoslynProjectKind effectiveKind, RoslynProjectKind declaredKind, string declaredValue)
 {
     Debug.Assert(declaredKind == RoslynProjectKindUtil.GetRoslynProjectKind(declaredValue).Value);
     EffectiveKind = effectiveKind;
     DeclaredValue = declaredValue;
     DeclaredKind  = declaredKind;
 }
Exemple #2
0
        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()}");
                }
            }
        }
Exemple #3
0
        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);
                }
            }
        }