2012-04-15 2 views
1

Я загрузил среду разработки MonoDroid. Если я создам новый проект «Моно для Android-приложений» или импортирую образец проекта в MonoDevelop, я сразу же получу два следующих сообщения об ошибках, появляющихся в журнале сообщений (и не могу создать/запустить проект):MonoDevelop/MonoDroid project/build error: не действительная строка base-64

Error - 16:49:38 - Error running resgen 
System.FormatException: The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or a non-white space character among the padding characters. 
    at System.Convert.FromBase64String(String s) 
    at MonoDevelop.Projects.Formats.MSBuild.MSBuildProjectService.GetProjectBuilder(TargetRuntime runtime, String toolsVersion, String file) 
    at MonoDevelop.Projects.Formats.MSBuild.MSBuildProjectHandler.GetProjectBuilder() 
    at MonoDevelop.Projects.Formats.MSBuild.MSBuildProjectHandler.RunTarget(IProgressMonitor monitor, String target, ConfigurationSelector configuration) 
    at MonoDevelop.Projects.SolutionItem.OnRunTarget(IProgressMonitor monitor, String target, ConfigurationSelector configuration) 
    at MonoDevelop.Projects.SolutionEntityItem.OnRunTarget(IProgressMonitor monitor, String target, ConfigurationSelector configuration) 
    at MonoDevelop.Projects.DefaultProjectServiceExtension.RunTarget(IProgressMonitor monitor, IBuildTarget item, String target, ConfigurationSelector configuration) 
    at MonoDevelop.Projects.ProjectServiceExtension.RunTarget(IProgressMonitor monitor, IBuildTarget item, String target, ConfigurationSelector configuration) 
    at MonoDevelop.Projects.ProjectServiceExtension.RunTarget(IProgressMonitor monitor, IBuildTarget item, String target, ConfigurationSelector configuration) 
    at MonoDevelop.Projects.ProjectServiceExtension.RunTarget(IProgressMonitor monitor, IBuildTarget item, String target, ConfigurationSelector configuration) 
    at MonoDevelop.Projects.ProjectServiceExtension.RunTarget(IProgressMonitor monitor, IBuildTarget item, String target, ConfigurationSelector configuration) 
    at MonoDevelop.Projects.ProjectServiceExtension.RunTarget(IProgressMonitor monitor, IBuildTarget item, String target, ConfigurationSelector configuration) 
    at MonoDevelop.Projects.ProjectServiceExtension.RunTarget(IProgressMonitor monitor, IBuildTarget item, String target, ConfigurationSelector configuration) 
    at MonoDevelop.Projects.ProjectServiceExtension.RunTarget(IProgressMonitor monitor, IBuildTarget item, String target, ConfigurationSelector configuration) 
    at MonoDevelop.Projects.SolutionItem.RunTarget(IProgressMonitor monitor, String target, ConfigurationSelector configuration) 
    at MonoDevelop.MonoDroid.MonoDroidProject.<RunResgen>b__13(Object) 

Error - 16:49:38 - Parser database for project 'MonoA3 could not be loaded 
System.FormatException: The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or a non-white space character among the padding characters. 
    at System.Convert.FromBase64String(String s) 
    at MonoDevelop.Projects.Formats.MSBuild.MSBuildProjectService.GetProjectBuilder(TargetRuntime runtime, String toolsVersion, String file) 
    at MonoDevelop.Projects.Formats.MSBuild.MSBuildProjectHandler.GetProjectBuilder() 
    at MonoDevelop.Projects.Formats.MSBuild.MSBuildProjectHandler.<MonoDevelop.Projects.Extensions.IAssemblyReferenceHandler.GetAssemblyReferences>d__2.MoveNext() 
    at MonoDevelop.Projects.DotNetProject.<GetReferencedAssemblies>d__f.MoveNext() 
    at MonoDevelop.Projects.Dom.Serialization.ProjectCodeCompletionDatabase.UpdateFromProject() 
    at MonoDevelop.Projects.Dom.Serialization.ProjectCodeCompletionDatabase..ctor(Project project, ParserDatabase pdb) 
    at MonoDevelop.Projects.Dom.Serialization.ParserDatabase.LoadProjectDom(Project project) 
    at MonoDevelop.Projects.Dom.Parser.ProjectDomService.Load(Project project) 

Я удалил и переустановил MonoDevelop (V2.8.8.4, автоматически установленный в немецкой версии) и MonoDroid (4.0.6) несколько раз, но все равно получаю то же сообщение об ошибке (ОС - Win 7 Sp1). В виртуальной машине (Win Vista, английская версия) я мог запустить ее. Моя проблема в том, что я не вижу строку, которая вызывает проблему. Блок кода, который вызывает это исключение, я нашел here:

Process p = null; 
try { 
    p = runtime.ExecuteAssembly (pinfo); 
    p.StandardInput.WriteLine (Process.GetCurrentProcess().Id.ToString()); 
    string sref = p.StandardError.ReadLine(); 
    byte[] data = Convert.FromBase64String (sref); 
    MemoryStream ms = new MemoryStream (data); 
    BinaryFormatter bf = new BinaryFormatter(); 
    builder = new RemoteBuildEngine (p, (IBuildEngine) bf.Deserialize (ms)); 
} catch { 
    if (p != null) { 
     try { 
      p.Kill(); 
     } catch { } 
    } 
    throw; 
} 

С TargetRuntime выполнения, ProcessStartInfo pinfo. Похоже, что Process возвращает StandardError, который не является правильной строкой Base64. Как я могу получить доступ к стандартным выводам этого процесса? Я пришел из Java-World, я совершенно новый для Mono/.NET.

+0

Почему вы думаете, что p.StandardError.ReadLine() возвращает строку base64? – Steve

+0

Подпрограмма хочет декодировать ее из Base64, это то, что делает Convert.FromBase64String(), в соответствии с [документацией] (http://msdn.microsoft.com/en-us/library/system.convert.frombase64string.aspx) , По-видимому, он ожидает Base64 String? – CodeOrion

ответ

0

Я только сейчас изучаю эту ошибку. Просто для подтверждения, вы говорите, что он отлично работает на английской версии Windows Vista, но исключение вызывается, если вы используете немецкую версию Windows 7? Я буду тестировать на английской версии Windows 7, используя те же версии программного обеспечения, что и вам, если я могу вызвать ту же проблему.

+0

Установка Mono на немецком языке на Win7, но сама Win7 находится на английском языке. Вероятно, установщик Mono выбирает язык из настроек системы или браузера, у меня не было возможности выбрать язык. Я не уверен, связана ли проблема с языком. Я полагаю, что в моей машине есть что-то, что вызывает ошибку при запуске Mono. Мой подход состоял бы в том, чтобы получить доступ к этому выходу Process, возможно, содержащему какое-то сообщение об ошибке. – CodeOrion

+0

Я попытался установить его на другую машину с Win7 German. MonoDevelop решила быть на немецком языке. Я действительно не знаю, как установить язык здесь, не спрашивали (?). Я не получил сообщение об ошибке. Но когда я хочу запустить шаблон или образец проекта, я получаю другое сообщение об ошибке сборки: «Свойство OutputPath не установлено для проекта [...]. Но в настройках есть путь, установленный для« Ausgabepfad », в настройках проекта. Возможно, это все о немецкой версии MonoDevelop? – CodeOrion

Смежные вопросы