Visual Studio XNA内容项目中内容的通配符?

9rygscc1  于 2023-01-14  发布在  其他
关注(0)|答案(2)|浏览(155)

我有一个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中工作。

py49o6xq

py49o6xq1#

您必须在项目定义中使用通配符:

<ItemGroup>
  <Compile Include="tiles\**\*.BMP"
           Exclude="tiles\.svn\*">
    <Name>%(Compile.Filename)</Name>
    <Importer>TextureImporter</Importer>
    <Processor>TextureProcessor</Processor>
  </Compile>
</ItemGroup>
p4rjhz4m

p4rjhz4m2#

我发现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" />

相关问题