我试图在博客上实现类似于外部参考示例的东西。
http://blogs.msdn.com/b/shawnhar/archive/2008/08/12/everything-you-ever-wanted-to-know-about-intermediateserializer.aspx
我遇到的问题是,当VS试图编译xml文件时,它会抛出一个错误,如
构建内容抛出的"C:\Work\Company\Project\trunk\Project.Content\Sprites\Effects\EffectsSprite.tga“:外部引用ArgumentException不是已编译的.xnb文件。(在Microsoft.Xna.Framework.Content.Pipeline.Serialization.Compiler.ContentWriter.WriteExternalReferenceT at Microsoft.Xna.Framework.Content.Pipeline.Serialization.Compiler.ExternalReferenceWriter1.Write(ContentWriter output, ExternalReference1 value) at Microsoft.Xna.Framework.Content.Pipeline.Serialization.Compiler.ContentTypeWriter1.Write(ContentWriter output, Object value) at Microsoft.Xna.Framework.Content.Pipeline.Serialization.Compiler.ContentWriter.InvokeWriter[T](T value, ContentTypeWriter writer) at Microsoft.Xna.Framework.Content.Pipeline.Serialization.Compiler.ContentWriter.WriteObject[T](T value) at Microsoft.Xna.Framework.Content.Pipeline.Serialization.Compiler.ContentWriter.WriteSharedResources() at Microsoft.Xna.Framework.Content.Pipeline.Serialization.Compiler.ContentWriter.FlushOutput() at Microsoft.Xna.Framework.Content.Pipeline.Serialization.Compiler.ContentCompiler.Compile(Stream output, Object value, TargetPlatform targetPlatform, GraphicsProfile targetProfile, Boolean compressContent, String rootDirectory, String referenceRelocationPath) at Microsoft.Xna.Framework.Content.Pipeline.BuildCoordinator.SerializeOutputAsset(BuildItem item, Object assetData, String outputFilename) at Microsoft.Xna.Framework.Content.Pipeline.BuildCoordinator.SerializeAsset(BuildItem item, Object assetData) at Microsoft.Xna.Framework.Content.Pipeline.BuildCoordinator.BuildAssetWorker(BuildItem item) at Microsoft.Xna.Framework.Content.Pipeline.BuildCoordinator.BuildAsset(BuildItem item) at Microsoft.Xna.Framework.Content.Pipeline.BuildCoordinator.RunTheBuild() at Microsoft.Xna.Framework.Content.Pipeline.Tasks.BuildContent.RemoteProxy.RunTheBuild(BuildCoordinatorSettings settings, TimestampCache timestampCache, ITaskItem[] sourceAssets, String[]& outputContent, String[]& rebuiltContent, String[]& intermediates, Dictionary2& dependencyTimestamps,KeyValuePair`2`2[]& warnings) C:\Work\Company\Project\trunk\Project.Content\Sprites\Effects\AtlasAuto.xml项目
我该如何处理Xml文件引用的文件?考虑到它与xml文件位于同一个文件夹中,我尝试:
似乎什么都起不到作用。我想知道这个例子是否在XNA4中有效,或者是否适用于XNA3,他们改变了XNA4上的工作方式.
知道吗?
发布于 2012-01-17 05:22:47
很难说,如果没有看到XML和项目布局,但我相信可能是这样的:
您的方法看起来不错,但问题是您还需要构建这个纹理文件。ExternalReference可以指向源文件(例如.jpg或.fx),也可以指向已编译的.xnb文件。通常,您希望管道开始时输入的数据指向源文件,但从另一端流出的数据需要指向已编译的.xnb文件,因此这些数据可以加载到您的游戏中。实现这一点的最常见方法是使用自定义处理器,该处理器接受对源资产的引用,请求编译该资产,并将该引用更改为指向其编译后的版本。例如(在处理器中):
material.Texture = context.BuildAsset<TextureContent, TextureContent>(material.Texture, "TextureProcessor");
在这里引用(在第二篇文章中):http://forums.create.msdn.com/forums/t/44917.aspx
发布于 2013-10-15 19:38:30
我怀疑xml内容中的外部引用不能指向源资产。
https://stackoverflow.com/questions/5127265
复制相似问题