我有一个XNA 3.1内容项目(.contentproj),其中包含以下内容:
<ItemGroup>
<Compile Include="tiles\B000N800.BMP">
<Name>B000N800</Name>
<Importer>TextureImporter</Importer>
<Processor>TextureProcessor</Processor>
</Compile>
<Compile Include="tiles\B000N801.BMP">
<Name>B000N801</Name>
<Importer>TextureImporter</Importer>
<Processor>TextureProcessor</Processor>
</Compile>
(... and so on ...)
</ItemGroup>
我想要做的是能够指定一个通配符,以便编译tiles\*.bmp
- 这样当我添加和删除纹理时,我不必继续重新同步内容项目“tiles”目录。
有没有人知道这样做的方法?
理想情况下,解决方案会忽略“tiles”下隐藏的“.svn”目录。内容项目也将继续在Visual Studio中运行。
答案 0 :(得分:3)
您必须在项目定义中使用通配符:
<ItemGroup>
<Compile Include="tiles\**\*.BMP"
Exclude="tiles\.svn\*">
<Name>%(Compile.Filename)</Name>
<Importer>TextureImporter</Importer>
<Processor>TextureProcessor</Processor>
</Compile>
</ItemGroup>
答案 1 :(得分:2)
我找到了一篇Shawn Hargreaves的博客文章,描述了如何为XNA 1.0做到这一点:
Wildcard content using MSBuild
基于此,以下是我使用XNA 3.1进行的操作(并且不会导致出现那些奇怪的_0):
使用以下内容创建单独的“tiles.proj”文件:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
<ItemGroup>
<WildcardContent Include="tiles\**\*.BMP" Exclude="tiles\.svn\*">
<Importer>TextureImporter</Importer>
<Processor>TextureProcessor</Processor>
</WildcardContent>
</ItemGroup>
<Target Name="BeforeBuild">
<CreateItem Include="@(WildcardContent)" AdditionalMetadata="Name=%(FileName)">
<Output TaskParameter="Include" ItemName="Compile" />
</CreateItem>
</Target>
</Project>
在原来的“.contentproj”文件中,在</Project>
之前,添加:
<Import Project="tiles.proj" />