示例#1
0
        private static bool AddNonCultureResources(Project project, List <string> compilerArgs, string intermediateOutputPath)
        {
            var resgenFiles = CompilerUtil.GetNonCultureResources(project, intermediateOutputPath);

            foreach (var resgenFile in resgenFiles)
            {
                if (ResourceUtility.IsResxFile(resgenFile.InputFile))
                {
                    var result =
                        Command.Create("dotnet-resgen",
                                       $"\"{resgenFile.InputFile}\" -o \"{resgenFile.OutputFile}\" -v \"{project.Version.Version}\"")
                        .ForwardStdErr()
                        .ForwardStdOut()
                        .Execute();

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

                    compilerArgs.Add($"--resource:\"{resgenFile.OutputFile}\",{Path.GetFileName(resgenFile.MetadataName)}");
                }
                else
                {
                    compilerArgs.Add($"--resource:\"{resgenFile.InputFile}\",{Path.GetFileName(resgenFile.MetadataName)}");
                }
            }

            return(true);
        }
示例#2
0
        protected static bool AddNonCultureResources(Project project, List <string> compilerArgs, string intermediateOutputPath)
        {
            var resgenFiles = CompilerUtil.GetNonCultureResources(project, intermediateOutputPath);

            foreach (var resgenFile in resgenFiles)
            {
                if (ResourceUtility.IsResxFile(resgenFile.InputFile))
                {
                    var arguments = new[]
                    {
                        $"{resgenFile.InputFile}",
                        $"-o:{resgenFile.OutputFile}",
                        $"-v:{project.Version.Version}"
                    };

                    var rsp = Path.Combine(intermediateOutputPath, $"dotnet-resgen-resx.rsp");
                    File.WriteAllLines(rsp, arguments);

                    var result = Resgen.ResgenCommand.Run(new[] { $"@{rsp}" });

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

                    compilerArgs.Add($"--resource:\"{resgenFile.OutputFile}\",{Path.GetFileName(resgenFile.MetadataName)}");
                }
                else
                {
                    compilerArgs.Add($"--resource:\"{resgenFile.InputFile}\",{Path.GetFileName(resgenFile.MetadataName)}");
                }
            }

            return(true);
        }
示例#3
0
 public static List <NonCultureResgenIO> GetNonCultureResources(Project project, string intermediateOutputPath)
 {
     return
         ((from resourceFile in project.Files.ResourceFiles
           let inputFile = resourceFile.Key
                           where string.IsNullOrEmpty(ResourceUtility.GetResourceCultureName(inputFile))
                           let metadataName = GetResourceFileMetadataName(project, resourceFile.Key, resourceFile.Value)
                                              let outputFile = ResourceUtility.IsResxFile(inputFile) ? Path.Combine(intermediateOutputPath, metadataName) : null
                                                               select new NonCultureResgenIO(inputFile, outputFile, metadataName))
          .ToList());
 }
示例#4
0
        public static List <NonCultureResgenIO> GetNonCultureResourcesFromIncludeEntries(Project project, string intermediateOutputPath, CommonCompilerOptions compilationOptions)
        {
            var includeFiles = IncludeFilesResolver.GetIncludeFiles(compilationOptions.EmbedInclude, "/", diagnostics: null);

            return
                ((from resourceFile in includeFiles
                  let inputFile = resourceFile.SourcePath
                                  where string.IsNullOrEmpty(ResourceUtility.GetResourceCultureName(inputFile))
                                  let target = resourceFile.IsCustomTarget ? resourceFile.TargetPath : null
                                               let metadataName = GetResourceFileMetadataName(project, resourceFile.SourcePath, target)
                                                                  let outputFile = ResourceUtility.IsResxFile(inputFile) ? Path.Combine(intermediateOutputPath, metadataName) : null
                                                                                   select new NonCultureResgenIO(inputFile, outputFile, metadataName))
                 .ToList());
        }
 private static void AddNonCultureResources(List <string> resources, List <CompilerUtility.NonCultureResgenIO> resgenFiles)
 {
     foreach (var resgenFile in resgenFiles)
     {
         if (ResourceUtility.IsResxFile(resgenFile.InputFile))
         {
             resources.Add($"\"{resgenFile.OutputFile}\",{Path.GetFileName(resgenFile.MetadataName)}");
         }
         else
         {
             resources.Add($"\"{resgenFile.InputFile}\",{Path.GetFileName(resgenFile.MetadataName)}");
         }
     }
 }
示例#6
0
        protected static bool AddNonCultureResources(
            Project project,
            List <string> compilerArgs,
            string intermediateOutputPath,
            CommonCompilerOptions compilationOptions)
        {
            List <CompilerUtil.NonCultureResgenIO> resgenFiles = null;

            if (compilationOptions.EmbedInclude == null)
            {
                resgenFiles = CompilerUtil.GetNonCultureResources(project, intermediateOutputPath);
            }
            else
            {
                resgenFiles = CompilerUtil.GetNonCultureResourcesFromIncludeEntries(project, intermediateOutputPath, compilationOptions);
            }

            foreach (var resgenFile in resgenFiles)
            {
                if (ResourceUtility.IsResxFile(resgenFile.InputFile))
                {
                    var result = Resgen.ResgenCommand.Run(
                        new[] { resgenFile.InputFile },
                        culture: null,
                        outputFile: resgenFile.OutputFile,
                        version: project.Version.Version.ToString(),
                        compilationReferences: null);

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

                    compilerArgs.Add($"--resource:\"{resgenFile.OutputFile}\",{Path.GetFileName(resgenFile.MetadataName)}");
                }
                else
                {
                    compilerArgs.Add($"--resource:\"{resgenFile.InputFile}\",{Path.GetFileName(resgenFile.MetadataName)}");
                }
            }

            return(true);
        }
示例#7
0
文件: Program.cs 项目: NabidAlam/cli
        private static bool AddResources(Project project, List <string> compilerArgs, string intermediateOutputPath)
        {
            foreach (var resourceFile in project.Files.ResourceFiles)
            {
                var resourcePath = resourceFile.Key;

                if (!string.IsNullOrEmpty(ResourceUtility.GetResourceCultureName(resourcePath)))
                {
                    // Include only "neutral" resources into main assembly
                    continue;
                }

                var name = GetResourceFileMetadataName(project, resourceFile);

                var fileName = resourcePath;

                if (ResourceUtility.IsResxFile(fileName))
                {
                    // {file}.resx -> {file}.resources
                    var resourcesFile = Path.Combine(intermediateOutputPath, name);

                    var result = Command.Create("dotnet-resgen", $"\"{fileName}\" -o \"{resourcesFile}\" -v \"{project.Version.Version}\"")
                                 .ForwardStdErr()
                                 .ForwardStdOut()
                                 .Execute();

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

                    // Use this as the resource name instead
                    fileName = resourcesFile;
                }

                compilerArgs.Add($"--resource:\"{fileName}\",{name}");
            }

            return(true);
        }
示例#8
0
        private static bool AddNonCultureResources(Project project, List <string> compilerArgs, string intermediateOutputPath)
        {
            var resgenFiles = CompilerUtil.GetNonCultureResources(project, intermediateOutputPath);

            foreach (var resgenFile in resgenFiles)
            {
                if (ResourceUtility.IsResxFile(resgenFile.InputFile))
                {
                    var arguments = new[]
                    {
                        resgenFile.InputFile,
                        $"-o:{resgenFile.OutputFile}",
                        $"-v:{project.Version.Version}"
                    };

                    var rsp = Path.Combine(intermediateOutputPath, $"dotnet-resgen-resx.rsp");
                    File.WriteAllLines(rsp, arguments);

                    var result =
                        Command.CreateDotNet("resgen", new[] { $"@{rsp}" })
                        .ForwardStdErr()
                        .ForwardStdOut()
                        .Execute();

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

                    compilerArgs.Add($"--resource:\"{resgenFile.OutputFile},{Path.GetFileName(resgenFile.MetadataName)}\"");
                }
                else
                {
                    compilerArgs.Add($"--resource:\"{resgenFile.InputFile},{Path.GetFileName(resgenFile.MetadataName)}\"");
                }
            }

            return(true);
        }
示例#9
0
        public static bool GenerateNonCultureResources(Project project, List <CompilerUtility.NonCultureResgenIO> resgenFiles, IList <string> diagnostics)
        {
            foreach (var resgenFile in resgenFiles)
            {
                if (ResourceUtility.IsResxFile(resgenFile.InputFile))
                {
                    var outputResourceFile = ResourceFile.Create(resgenFile.OutputFile);

                    if (outputResourceFile.Type != ResourceFileType.Resources)
                    {
                        diagnostics.Add("Resource output type not supported");
                        return(false);
                    }

                    using (var outputStream = outputResourceFile.File.Create())
                    {
                        var resourceSource = new ResourceSource(ResourceFile.Create(resgenFile.InputFile), resgenFile.InputFile);
                        ResourceFileGenerator.Generate(resourceSource.Resource, outputStream);
                    }
                }
            }

            return(true);
        }