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); }
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); }
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()); }
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)}"); } } }
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); }
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); }
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); }
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); }