Преглед на файлове

fixed a bug in protogen causing
"CSC : fatal error CS1647: An expression is too long or complex to compile"
when building auto-generated code

Sergey Geyn преди 12 години
родител
ревизия
4a04773b5b
променени са 1 файла, в които са добавени 4 реда и са изтрити 2 реда
  1. 4 2
      src/ProtoGen/UmbrellaClassGenerator.cs

+ 4 - 2
src/ProtoGen/UmbrellaClassGenerator.cs

@@ -143,6 +143,7 @@ namespace Google.ProtocolBuffers.ProtoGen
             writer.WriteLine("#region Designer generated code");
 
             writer.WriteLine();
+            writer.WriteLine("using System;");
             writer.WriteLine("using pb = global::Google.ProtocolBuffers;");
             writer.WriteLine("using pbc = global::Google.ProtocolBuffers.Collections;");
             writer.WriteLine("using pbd = global::Google.ProtocolBuffers.Descriptors;");
@@ -206,16 +207,17 @@ namespace Google.ProtocolBuffers.ProtoGen
             writer.WriteLine("byte[] descriptorData = global::System.Convert.FromBase64String(");
             writer.Indent();
             writer.Indent();
-
+            writer.WriteLine("String.Concat(");
             // TODO(jonskeet): Consider a C#-escaping format here instead of just Base64.
             byte[] bytes = Descriptor.Proto.ToByteArray();
             string base64 = Convert.ToBase64String(bytes);
 
             while (base64.Length > 60)
             {
-                writer.WriteLine("\"{0}\" + ", base64.Substring(0, 60));
+                writer.WriteLine("\"{0}\" , ", base64.Substring(0, 60));
                 base64 = base64.Substring(60);
             }
+            writer.WriteLine("\"{0}\") );", base64);
             writer.WriteLine("\"{0}\");", base64);
             writer.Outdent();
             writer.Outdent();