使用MGCB处理字体时的路径无效

时间:2015-08-07 21:25:14

标签: c# monogame

我玩Monogame并且无法添加字体。 使用MonoGame Pipeline工具添加字体时,我无法再构建项目了。

Visual Studio停止并出现以下错误:

  Der Befehl   "" C:\ Program Files(x86)\ MSBuild \ MonoGame \ v3.0 \ Tools \ MGCB.exe"   /@:"C:\dev\Mini\Mini\Content\Content.mgcb" /平台:WINDOWS   / outputDir:" C:\ dev的\赠送\赠送\内容\ BIN \ Windows和#34;   / intermediateDir:" C:\ dev的\赠送\赠送\内容\ OBJ \ Windows和#34; /安静" wurde   mit dem Code 1 beendet。   ' FontDescriptionProcessor'有意想不到的

(抱歉,它的德语,但我认为你可以理解这个问题;))

当我执行错误抛出命令时,我得到一个更有帮助的错误:

  

C:\ dev \ Mini \ Mini \ Content>" C:\ Program Files   (86)\的MSBuild \ MonoGame \ 3.0 \工具\ MGCB.exe"   /@:"C:\dev\Mini\Mini\Content\Content.mgcb" /平台:WINDOWS   / outputDir:" C:\ dev的\赠送\赠送\内容\ BIN \ Windows和#34;   / intermediateDir:" C:\ dev的\赠送\赠送\内容\ OBJ \ Windows和#34;建立开始   07.08.2015 23:15:43

     

跳过C:/dev/Mini/Mini/Content/Game/Character.PNG跳过   C:/dev/Mini/Mini/Content/SplashScreen/splashScreenGame.png跳过   C:/dev/Mini/Mini/Content/Game/Background.PNG   C:/dev/Mini/Mini/Content/fonts/default.spritefont   C:/dev/Mini/Mini/Content/fonts/default.spritefont:错误:处理器   ' FontDescriptionProcessor'意外失败!   System.ArgumentException:Illegales Zeichen im Pfad。北   System.IO.Path.CheckInvalidPathChars(String path,Boolean   checkAdditional)bei System.IO.Path.IsPathRooted(String path)
  北   Microsoft.Xna.Framework.Content.Pipeline.Processors.FontDescriptionProcessor.FindFontFileFromFontName(字符串   fontName,String fontDirectory)bei   Microsoft.Xna.Framework.Content.Pipeline.Processors.FontDescriptionProcessor.Process(的FontDescription   input,ContentProcessorContext context)bei   Microsoft.Xna.Framework.Content.Pipeline.ContentProcessor`2.Microsoft.Xna.Framework.Content.Pipeline.IContentProcessor.Process(对象   input,ContentProcessorContext context)bei   MonoGame.Framework.Content.Pipeline.Builder.PipelineManager.ProcessContent(PipelineBuildEvent   pipelineEvent)跳绳   C:/dev/Mini/Mini/Content/SplashScreen/SplashScreen.xml跳过   C:/dev/Mini/Mini/Content/Game/Game.xml

     

Build 3成功,1失败。

     

时间00:00:00.19。

我理解,路径C:/dev/Mini/Mini/Content/fonts/default.spritefont 是无效的,但我没有看到任何无效字符。 .spritefont文件是使用MonoGame工具生成的,不会导入。我错过了什么吗?

我在Windows 10上,MonoGame Pipeline Tool的版本为3.5.0.465,而MGCB.exe的版本为3.5.0.465。

编辑:当我自己检查路径时,一切看起来都不错,将整个项目移动到另一个硬盘并没有任何帮助。

Edit2:Okey。看起来它不是我的字体路径。它是从注册表加载的路径。 registryKey.GetValue(current).ToString();方法中的行FindFontFileFromFontName返回ARIAL.TTF\00\0\0\0\0\0。我会调查并更新这个问题或回答。

2 个答案:

答案 0 :(得分:1)

在测试后我找到了解决方案(或者我发现了问题......): 我的注册表中的某些字体路径已损坏。具有大写Date值的字体抛出错误。当您遇到类似的问题时,请查看"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Fonts" l下的注册表,检查您选择的字体或将其更改为其他字体。我希望这个解决方案也会对你有所帮助。 (当有人知道,为什么我的注册表数据被破坏了,请告诉我。)

issues

答案 1 :(得分:0)

我有这个错误,因为spritefont文件只是一个字体元数据定义文件,而不是我仍然在Windows中手动安装TTF字体文件的实际字体,然后构建成功,因为然后可以找到字体压缩成二进制文件。