使用msbuild动态包含文件,同时保留相对路径?
我正在尝试使用以下msbuild目标将第二个项目中的文件作为嵌入资源包括在内:使用msbuild动态包含文件,同时保留相对路径?,msbuild,embedded-resource,csproj,Msbuild,Embedded Resource,Csproj,我正在尝试使用以下msbuild目标将第二个项目中的文件作为嵌入资源包括在内: <CreateItem Include="..\MyProject.Templates\**\*.css"> <Output ItemName="EmbeddedResource" TaskParameter="Include" /> </CreateItem> 但是包含的文件失去了它们的路径,例如~\Views\\u Layout.cshtml包
<CreateItem Include="..\MyProject.Templates\**\*.css">
<Output ItemName="EmbeddedResource" TaskParameter="Include" />
</CreateItem>
但是包含的文件失去了它们的路径,例如~\Views\\u Layout.cshtml
包含为\u Layout.cshtml
(而不是视图。\u Layout.cshtml
)。有什么方法可以达到预期的效果吗?MSBuild有。使用这些方法,您可以使用ItemGroup(而不是CreateItem)映射资源,然后使用创建另一个ItemGroup。有许多项元数据选项可用于实现所需的效果。上面有一个关于语法的清晰示例
我写了一个小脚本作为例子。它使用*.exe文件创建一个项目组并对其进行转换。使用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>
不推荐使用“CreateItem”任务,您有什么理由使用它吗?复制n粘贴我想要实现的就是(1)从通配符路由引入嵌入式资源,(2)以这种方式VS不会将其具体化,(3)同时保留路径结构。这管理(1)和(2)…如此简单和有用。我想知道这是否对OP有效。我刚刚将一个项目从NAnt切换到MSBuild,到目前为止,我对它的深思熟虑印象深刻。您的“”已被删除。。。你有新的链接吗?或者…?@Seagal82尽我所能找到一个新链接,不知道为什么他们删除了答案