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には全く新しいものです。
なぜp.StandardError.ReadLine()がbase64文字列を返すと思いますか? – Steve
ルーチンは、[Documentation](http://msdn.microsoft.com/en-us/library/system.convert.frombase64string.aspx)によると、Convert.FromBase64String()が実行するBase64からのデコードを望んでいます。 。だから明らかにそれはBase64 Stringを期待していますか? – CodeOrion