예제 #1
0
파일: SlugCI.cs 프로젝트: SlugEnt/SlugCI
        private void LoadSolutionInfo()
        {
            List <string> solutionFiles = SearchForSolutionFile(CISession.RootDirectory.ToString(), ".sln");

            ControlFlow.Assert(solutionFiles.Count != 0, "Unable to find the solution file");
            ControlFlow.Assert(solutionFiles.Count == 1, "Found more than 1 solution file under the root directory -  - We can only work with 1 solution file." + CISession.RootDirectory.ToString());
            CISession.SolutionFileName = solutionFiles[0];
            CISession.Solution         = SolutionSerializer.DeserializeFromFile <Solution>(CISession.SolutionFileName);
            CISession.SolutionPath     = CISession.Solution.Directory;
        }
예제 #2
0
        public void DuplicatedProjectTest()
        {
            var content = @"
Project(""{9A19103F-16F7-4668-BE54-9A1E7A4F7556}"") = ""_build"", ""build\_build.csproj"", ""{BB6A9024-24DB-4170-A09B-02349148A78F}""
EndProject
Project(""{9A19103F-16F7-4668-BE54-9A1E7A4F7556}"") = ""_build"", ""build\_build.csproj"", ""{BB6A9024-24DB-4170-A09B-02349148A78F}""
EndProject
Global
EndGlobal".SplitLineBreaks();

            Action action = () => SolutionSerializer.DeserializeFromContent <Solution>(content);

            action.Should().Throw <Exception>()
            .Where(x => x.Message.Contains("Solution contains duplicated project ids") &&
                   x.Message.Contains(" - bb6a9024-24db-4170-a09b-02349148a78f"));
        }
예제 #3
0
        public void DuplicatedProjectConfigurationTest()
        {
            var content = @"
Global
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
		{BB6A9024-24DB-4170-A09B-02349148A78F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{BB6A9024-24DB-4170-A09B-02349148A78F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{BB6A9024-24DB-4170-A09B-02349148A78F}.Release|Any CPU.ActiveCfg = Debug|Any CPU
	EndGlobalSection
EndGlobal".SplitLineBreaks();

            Action action = () => SolutionSerializer.DeserializeFromContent <Solution>(content);

            action.Should().Throw <Exception>()
            .Where(x => x.Message.Contains("Solution contains duplicated ProjectConfigurationPlatforms entries") &&
                   x.Message.Contains(" - {BB6A9024-24DB-4170-A09B-02349148A78F}.Debug|Any CPU.ActiveCfg"));
        }
예제 #4
0
        public void DuplicatedSolutionConfigurationTest()
        {
            var content = @"
Global
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
		Debug|Any CPU = Debug|Any CPU
		Debug|Any CPU = Debug|Any CPU
		Release|Any CPU = Release|Any CPU
	EndGlobalSection
EndGlobal".SplitLineBreaks();

            Action action = () => SolutionSerializer.DeserializeFromContent <Solution>(content);

            action.Should().Throw <Exception>()
            .Where(x => x.Message.Contains("Solution contains duplicated SolutionConfigurationPlatforms entries") &&
                   x.Message.Contains(" - Debug|Any CPU"));
        }
예제 #5
0
        public void Execute(GeneratorExecutionContext context)
        {
            var compilation           = context.Compilation;
            var allTypes              = compilation.Assembly.GlobalNamespace.GetAllTypes();
            var membersWithAttributes = allTypes.SelectMany(x => x.GetMembers())
                                        .Where(x => x is IPropertySymbol || x is IFieldSymbol)
                                        .Select(x => (Member: x, AttributeData: x.GetAttributeData("global::Nuke.Common.ProjectModel.SolutionAttribute")))
                                        .Where(x => x.AttributeData != null).ToList();

            if (membersWithAttributes.Count == 0)
            {
                return;
            }

            var rootDirectory   = GetRootDirectoryFrom(compilation);
            var compilationUnit = CompilationUnit()
                                  .AddUsings(UsingDirective(IdentifierName("Nuke.Common.ProjectModel")));

            foreach (var(member, attributeData) in membersWithAttributes)
            {
                var attributeArguments = attributeData.NamedArguments;
                if (attributeArguments.SingleOrDefault(x => x.Key == "GenerateProjects").Value.Value as bool? != true)
                {
                    continue;
                }

                var solutionFile = GetSolutionFileFromParametersFile(rootDirectory, member.Name);
                var solution     = SolutionSerializer.DeserializeFromFile <Solution>(solutionFile);

                var classDeclaration = GetSolutionFolderDeclaration(member.Name, solution.SolutionFolders, solution.Projects, isSolution: true);
                compilationUnit = compilationUnit
                                  .AddMembers(member.ContainingType.ContainingNamespace.Equals(compilation.GlobalNamespace, SymbolEqualityComparer.Default)
                        ? NamespaceDeclaration(IdentifierName(member.ContainingType.ContainingNamespace.GetFullName()))
                                              .AddMembers(classDeclaration)
                        : classDeclaration);
            }

            var source = compilationUnit.NormalizeWhitespace().ToFullString();

            context.AddSource(nameof(StronglyTypedSolutionGenerator), source);
        }
예제 #6
0
파일: Solver.cs 프로젝트: TedevFR/GHC_2018
        private void CreateOutput()
        {
            var solutionSerializer = new SolutionSerializer(_outputFilePath);

            solutionSerializer.Serialize(_problemData);
        }