Esempio n. 1
0
        protected static bool GenerateCultureResourceAssemblies(
            Project project,
            List <LibraryExport> dependencies,
            string outputPath,
            CommonCompilerOptions compilationOptions)
        {
            var referencePaths = CompilerUtil.GetReferencePathsForCultureResgen(dependencies);

            List <CompilerUtil.CultureResgenIO> cultureResgenFiles = null;

            if (compilationOptions.EmbedInclude == null)
            {
                cultureResgenFiles = CompilerUtil.GetCultureResources(project, outputPath);
            }
            else
            {
                cultureResgenFiles = CompilerUtil.GetCultureResourcesFromIncludeEntries(project, outputPath, compilationOptions);
            }

            foreach (var resgenFile in cultureResgenFiles)
            {
                var resourceOutputPath = Path.GetDirectoryName(resgenFile.OutputFile);

                if (!Directory.Exists(resourceOutputPath))
                {
                    Directory.CreateDirectory(resourceOutputPath);
                }

                var result = Resgen.ResgenCommand.Run(
                    resgenFile.InputFileToMetadata.Select(fileToMetadata => $"{fileToMetadata.Key},{fileToMetadata.Value}"),
                    resgenFile.Culture,
                    resgenFile.OutputFile,
                    project.Version.Version.ToString(),
                    referencePaths);

                if (result != 0)
                {
                    return(false);
                }
            }

            return(true);
        }
Esempio n. 2
0
        private static bool GenerateCultureResourceAssemblies(
            Project project,
            List <LibraryExport> dependencies,
            string intermediateOutputPath,
            string outputPath)
        {
            var referencePaths      = CompilerUtil.GetReferencePathsForCultureResgen(dependencies);
            var resgenReferenceArgs = referencePaths.Select(path => $"-r:{path}").ToList();
            var cultureResgenFiles  = CompilerUtil.GetCultureResources(project, outputPath);

            foreach (var resgenFile in cultureResgenFiles)
            {
                var resourceOutputPath = Path.GetDirectoryName(resgenFile.OutputFile);

                if (!Directory.Exists(resourceOutputPath))
                {
                    Directory.CreateDirectory(resourceOutputPath);
                }

                var arguments = new List <string>();

                arguments.AddRange(resgenReferenceArgs);
                arguments.Add($"-o:{resgenFile.OutputFile}");
                arguments.Add($"-c:{resgenFile.Culture}");
                arguments.Add($"-v:{project.Version.Version}");
                arguments.AddRange(resgenFile.InputFileToMetadata.Select(fileToMetadata => $"{fileToMetadata.Key},{fileToMetadata.Value}"));
                var rsp = Path.Combine(intermediateOutputPath, $"dotnet-resgen.rsp");
                File.WriteAllLines(rsp, arguments);

                var result = Command.CreateDotNet("resgen", new[] { $"@{rsp}" })
                             .ForwardStdErr()
                             .ForwardStdOut()
                             .Execute();
                if (result.ExitCode != 0)
                {
                    return(false);
                }
            }

            return(true);
        }
Esempio n. 3
0
        private static bool GenerateCultureResourceAssemblies(Project project, List <LibraryExport> dependencies, string outputPath)
        {
            var referencePaths      = CompilerUtil.GetReferencePathsForCultureResgen(dependencies);
            var resgenReferenceArgs = referencePaths.Select(referencePath => $"-r \"{referencePath}\"").ToList();

            var cultureResgenFiles = CompilerUtil.GetCultureResources(project, outputPath);

            foreach (var resgenFile in cultureResgenFiles)
            {
                var resourceOutputPath = Path.GetDirectoryName(resgenFile.OutputFile);

                if (!Directory.Exists(resourceOutputPath))
                {
                    Directory.CreateDirectory(resourceOutputPath);
                }

                var arguments = new List <string>();

                arguments.AddRange(resgenReferenceArgs);
                arguments.Add($"-o \"{resgenFile.OutputFile}\"");
                arguments.Add($"-c {resgenFile.Culture}");
                arguments.Add($"-v {project.Version.Version}");
                arguments.AddRange(resgenFile.InputFileToMetadata.Select(fileToMetadata => $"\"{fileToMetadata.Key}\",{fileToMetadata.Value}"));

                var result = Command.Create("dotnet-resgen", arguments)
                             .ForwardStdErr()
                             .ForwardStdOut()
                             .Execute();
                if (result.ExitCode != 0)
                {
                    return(false);
                }
            }

            return(true);
        }