我可以包含子目录中的文件,但将其放置在构建文件的根目录而不是其原始子目录中吗?
示例:我们有多个 robots.txt 文件用于不同的发布配置。这些文件在解决方案中为 \IncludeTest\Development obots.txt 和 \IncludeTest\Production 机器人.txt
我可以使用类似的方式动态地抓取它们:
<ItemGroup Condition=" '$(Configuration)' == 'Development' ">
<Content Include="IncludeTest\Development\robots.txt">
<SubType>Designer</SubType>
</Content>
</ItemGroup>
但是当我这样做时,我会维护 \IncludeTest\Development\(或 \IncludeTest\Production)目录。有什么方法可以将它包含在根目录中,robots.txt 应该在哪里?
以上仍然不完全适合我,但我能够根据您设置项目组的方式找到解决方法:
在解决方案中包含文件作为链接将其放在根目录中。有了你的 $(Configuration) 提示,我能够做到这一点,只需将它作为链接动态包含,而不是将其复制到根目录。
<Content Include="..\Robots_Source\$(Configuration)\robots.txt">
<Link>robots.txt</Link>
</Content>
不确定我是否答对了你的问题,让我知道这是否如你所料:
<ItemGroup>
<Content Include = "IncludeTest\$(Configuration)\robots.txt">
<SubType>Designer</SubType>
</Content>
</ItemGroup>
复制到根目录:
<Copy SourceFiles="@(Content)"
DestinationFiles="@(Content ->'..\%(RecursiveDir)%(Filename)%(Extension)')" />
编辑:当文件位于嵌套目录中时可能会出现问题,因此请尝试:
<Copy SourceFiles="@(Content)"
DestinationFiles="@(Content ->'$(MSBuildProjectDirectory)..\%(RecursiveDir)%(Filename)%(Extension)')" />
这对我有用
文件 logo.png 在子文件夹 resource\image\logo.png 中
<ItemGroup>
<None Update="resource\image\logo.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<TargetPath>logo.png</TargetPath>
</None>
</ItemGroup>
它被复制到应用程序的根文件夹