2012-04-15 7 views
1

MonoDroid開発環境をダウンロードしました。新しい「Mono for Android Application」プロジェクトを作成した場合、またはMonoDevelopでサンプルプロジェクトをインポートした場合、メッセージログに次の2つのエラーメッセージが表示されます(プロジェクトをビルド/実行できません):MonoDevelop/MonoDroidプロジェクト/ビルドエラー:有効な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)を何度でもアンインストールして再インストールしましたが、同じエラーメッセージが表示されます(OSはWin 7 Sp1です)。 VM(Win Vista、英語版)では、それを稼働させることができました。私の問題は、私は問題を引き起こす文字列を見ることができないということです。私はhereを見つけ、この例外が発生するコードのブロック:TargetRuntimeランタイムと

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; 
} 

、ProcessStartInfo PINFO。これは、プロセスが正しいBase64文字列ではないStandardErrorを返すために発生します。このプロセスのStandardError出力にはどのようにアクセスできますか?私はJava-Worldから来て、私はMono/.NETには全く新しいものです。

+0

なぜp.StandardError.ReadLine()がbase64文字列を返すと思いますか? – Steve

+0

ルーチンは、[Documentation](http://msdn.microsoft.com/en-us/library/system.convert.frombase64string.aspx)によると、Convert.FromBase64String()が実行するBase64からのデコードを望んでいます。 。だから明らかにそれはBase64 Stringを期待していますか? – CodeOrion

答えて

0

今、このバグを調査中です。確認するには、Windows Vistaの英語版では問題なく動作しますが、ドイツ語版のWindows 7を使用すると例外がスローされます。同じ問題を引き起こす可能性がある場合は、同じソフトウェアバージョンを使用してWindows 7の英語版をテストします。

+0

モノインストールはWin7ではドイツ語ですが、Win7自体は英語です。おそらくMonoのインストーラは、システムやブラウザの設定から言語を選択するでしょう。言語を選択する機会はありませんでした。問題が言語に関連しているかどうかはわかりません。私はモノが始まる時にエラーを引き起こす何かが私のマシンセットアップにあると思います。私のアプローチは、おそらく何らかのエラーメッセージを含むこのProcess出力にアクセスすることです。 – CodeOrion

+0

私はそれを別のマシンにWin7ドイツ語でインストールしようとしました。 MonoDevelopもドイツ語になることに決めました。私は本当にここに言語を設定する方法を知らない、尋ねられていない(?)。私は報告されたエラーを取得していない。しかし、私はテンプレートやサンプルプロジェクトを実行するときに、私は別のビルドエラーメッセージが表示されます: "OutputPathプロパティはプロジェクト[...]に設定されていません。しかし、設定では、 'Ausgabepfad'おそらく、これはMonoDevelopのドイツ語バージョンに関するものでしょうか? – CodeOrion

関連する問題