2014-02-25 100 views
1

如果在使用sharpdx工具箱contentpipeline時未找到我的資產,可能會出現問題。SharpDX:未找到內容資產

sf = Content.Load<SpriteFont>("Arial16ClearType"); 

他們是在一個叫做「內容」子目錄,它被設置在應用程序:

Content.RootDirectory = "Content"; 

的BuildAction的正確設置爲Toolkitfont。 「複製到輸出目錄」是「不要複製」。

我加入這個對我的csproj

<Import Project="f:\work\github\SharpDX\SharpDX.targets" /> 

進口buildactions它總是拋出此異常

SharpDX.Toolkit.Content.AssetNotFoundException was unhandled 
    HResult=-2146233088 
    Message=Content\Arial16ClearType 
    Source=SharpDX.Toolkit 
    StackTrace: 
     at SharpDX.Toolkit.Content.ContentManager.FindStream(String assetName) in ..\..\Source\Toolkit\SharpDX.Toolkit\Content\ContentManager.cs:line 330 
     at SharpDX.Toolkit.Content.ContentManager.Load(Type assetType, String assetName, Object options) in ..\..\Source\Toolkit\SharpDX.Toolkit\Content\ContentManager.cs:line 201 
     at SharpDX.Toolkit.Content.ContentManager.Load[T](String assetName, Object options) in ..\..\Source\Toolkit\SharpDX.Toolkit\Content\ContentManager.cs:line 163 
     at glyphrenderer.GlyphGame.LoadContent() in GlyphGame.cs:line 78 
     at SharpDX.Toolkit.Game.InitializeBeforeRun() in ..\..\Source\Toolkit\SharpDX.Toolkit.Game\Game.cs:line 326 
     at SharpDX.Toolkit.GameWindowDesktop.RunRenderLoop() in ..\..\Source\Toolkit\SharpDX.Toolkit.Game\Desktop\GameWindowDesktop.cs:line 340 
     at SharpDX.Toolkit.GameWindowDesktop.Run() in ..\..\Source\Toolkit\SharpDX.Toolkit.Game\Desktop\GameWindowDesktop.cs:line 302 
     at SharpDX.Toolkit.GamePlatform.Run(GameContext gameContext) in ..\..\Source\Toolkit\SharpDX.Toolkit.Game\GamePlatform.cs:line 133 
     at SharpDX.Toolkit.Game.Run(GameContext gameContext) in ..\..\Source\Toolkit\SharpDX.Toolkit.Game\Game.cs:line 378 
     at glyphrenderer.Program.Main(String[] args) in Program.cs:line 18 
     at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) 
     at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 
     at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
     at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
     at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 
     at System.Threading.ThreadHelper.ThreadStart() 
    InnerException: 

回答

1

不知道你用的「BuildAction的設置正確,」但意思是說你必須使用構建操作ToolkitFont而不是Content,並且沒有指定「複製到輸出目錄」,因爲它是由ToolkitFont任務完成的。檢查以這種方式配置的Toolkit樣本中的項目。工具包任務負責將xml /源文件編譯成將在運行時加載的二進制形式。

+0

感謝您的回覆。實際上,我正是這樣,Build Action設置爲ToolkitFont,並且它們不會複製到輸出目錄。我注意到了一點細微差別,在示例解決方案中,資產在圖標上方有一個藍色覆蓋層,他們沒有在我的解決方案中有這個。 – clamp

+0

如果文件「Arial16ClearType.tkb」存在,你可以在你的exe文件的bin目錄中檢查'Content'目錄嗎?當你完全編譯你的項目時,你應該看到編譯成功的C:\ Code \ SharpDX \ Samples \ Toolkit \ Desktop \ SpriteBatchAndFont \ .. \ .. \ Common \ SpriteBatchAndFont \ Content \ Arial16.xml到C:\代碼\ SharpDX \的Samples \工具包\桌面\ SpriteBatchAndFont \ OBJ \調試\內容\ Arial16.tkb' – xoofx