Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CustomTools/ResXFileCodeGenerator.cs')
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CustomTools/ResXFileCodeGenerator.cs56
1 files changed, 29 insertions, 27 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CustomTools/ResXFileCodeGenerator.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CustomTools/ResXFileCodeGenerator.cs
index b54085a249..875c19baae 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CustomTools/ResXFileCodeGenerator.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CustomTools/ResXFileCodeGenerator.cs
@@ -45,41 +45,43 @@ using MonoDevelop.Core.Assemblies;
using System.Resources;
using System.Collections.Generic;
using System.Collections;
+using System.Threading.Tasks;
namespace MonoDevelop.Ide.CustomTools
{
public class ResXFileCodeGenerator : ISingleFileCustomTool
{
- public IAsyncOperation Generate (IProgressMonitor monitor, ProjectFile file, SingleFileCustomToolResult result)
+ public Task Generate (ProgressMonitor monitor, ProjectFile file, SingleFileCustomToolResult result)
{
- return new ThreadAsyncOperation (GenerateFile (file, result, true), result);
+ return GenerateFile (file, result, true);
}
- public static Action GenerateFile (ProjectFile file, SingleFileCustomToolResult result, bool internalClass)
+ public async static Task GenerateFile (ProjectFile file, SingleFileCustomToolResult result, bool internalClass)
{
- return delegate {
- var dnp = file.Project as DotNetProject;
- if (dnp == null) {
- var err = "ResXFileCodeGenerator can only be used with .NET projects";
- result.Errors.Add (new CompilerError (null, 0, 0, null, err));
- return;
- }
+ var dnp = file.Project as DotNetProject;
+ if (dnp == null) {
+ var err = "ResXFileCodeGenerator can only be used with .NET projects";
+ result.Errors.Add (new CompilerError (null, 0, 0, null, err));
+ return;
+ }
- var provider = dnp.LanguageBinding.GetCodeDomProvider ();
- if (provider == null) {
- var err = "ResXFileCodeGenerator can only be used with languages that support CodeDOM";
- result.Errors.Add (new CompilerError (null, 0, 0, null, err));
- return;
- }
+ var provider = dnp.LanguageBinding.GetCodeDomProvider ();
+ if (provider == null) {
+ var err = "ResXFileCodeGenerator can only be used with languages that support CodeDOM";
+ result.Errors.Add (new CompilerError (null, 0, 0, null, err));
+ return;
+ }
- var outputfile = file.FilePath.ChangeExtension (".Designer." + provider.FileExtension);
- var ns = CustomToolService.GetFileNamespace (file, outputfile);
- var cn = provider.CreateValidIdentifier (file.FilePath.FileNameWithoutExtension);
- var rd = new Dictionary<object, object> ();
+ var outputfile = file.FilePath.ChangeExtension (".Designer." + provider.FileExtension);
+ var ns = CustomToolService.GetFileNamespace (file, outputfile);
+ var cn = provider.CreateValidIdentifier (file.FilePath.FileNameWithoutExtension);
+ var rd = new Dictionary<object, object> ();
+ var filePath = file.FilePath;
+ var targetsPcl2Framework = TargetsPcl2Framework (dnp);
- using (var r = new ResXResourceReader (file.FilePath)) {
- r.UseResXDataNodes = true;
- r.BasePath = file.FilePath.ParentDirectory;
+ await Task.Factory.StartNew (() => {
+ using (var r = new ResXResourceReader (filePath)) {
+ r.BasePath = filePath.ParentDirectory;
foreach (DictionaryEntry e in r) {
rd.Add (e.Key, e.Value);
@@ -88,21 +90,21 @@ namespace MonoDevelop.Ide.CustomTools
string[] unmatchable;
var ccu = StronglyTypedResourceBuilder.Create (rd, cn, ns, provider, internalClass, out unmatchable);
-
- if (TargetsPcl2Framework (dnp)) {
+
+ if (targetsPcl2Framework) {
FixupPclTypeInfo (ccu);
}
foreach (var p in unmatchable) {
var msg = string.Format ("Could not generate property for resource ID '{0}'", p);
- result.Errors.Add (new CompilerError (file.FilePath, 0, 0, null, msg));
+ result.Errors.Add (new CompilerError (filePath, 0, 0, null, msg));
}
using (var w = new StreamWriter (outputfile, false, Encoding.UTF8))
provider.GenerateCodeFromCompileUnit (ccu, w, new CodeGeneratorOptions ());
result.GeneratedFilePath = outputfile;
- };
+ });
}
static bool TargetsPcl2Framework (DotNetProject dnp)