gpt4 book ai didi

msbuild - 使用msbuild动态包含文件同时保留相对路径?

转载 作者:行者123 更新时间:2023-12-01 03:58:57 24 4
gpt4 key购买 nike

我正在尝试使用以下 msbuild 目标将第二个项目中的文件包含为 EmbeddedResources:

    <CreateItem Include="..\MyProject.Templates\**\*.css">
<Output ItemName="EmbeddedResource" TaskParameter="Include" />
</CreateItem>

但是包含的文件丢失了它们的路径,例如 ~\Views\_Layout.cshtml包含为 _Layout.cshtml (不是 Views._Layout.cshtml 所希望的)。有什么办法可以达到想要的效果吗?

最佳答案

MSBuild 有 New Methods for Manipulating Items and Properties .使用这些方法,您可以使用 ItemGroup(而不是 CreateItem)映射您的资源,然后应用 MSBuild Transforms 创建另一个 ItemGroup。与 MSBuild Well-known Item Metadata .您可以使用许多项目元数据选项来实现所需的效果。 this answer 上有一个清晰的语法示例.

我写了一个小脚本作为例子。它使用 *.exe 文件创建一个 ItemGroup 并转换它们。使用 MSBuild 3.5 进行测试。

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<Project DefaultTargets="CreateItems" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="CreateItems">
<ItemGroup>
<Exe Include="..\**\*.exe" />
</ItemGroup>
<ItemGroup>
<TransformedExe Include="@(Exe->'%(Relativedir)')"/>
</ItemGroup>
<Message Text="1 - @(Exe)" />
<Message Text="2 - @(TransformedExe)" />
</Target>
</Project>

关于msbuild - 使用msbuild动态包含文件同时保留相对路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14864454/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com