4

次の msbuild ターゲットを使用して、2 番目のプロジェクトのファイルを EmbeddedResources として含めようとしています。

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

しかし、インクルードされたファイルはそのパスを失います。たとえば、 (必要に応じてではなく)~\Views\_Layout.cshtml含まれています。望ましい効果を達成する方法はありますか?_Layout.cshtmlViews._Layout.cshtml

4

1 に答える 1

2

MSBuild には、項目とプロパティを操作するための新しいメソッドがあります。これらのメソッドを使用すると、(CreateItem ではなく) ItemGroup を使用してリソースをマップし、MSBuild Well-known Item Metadataを使用してMSBuild Transformを適用して別の ItemGroup を作成できます。目的の効果を得るために使用できる多くのアイテム メタデータ オプションがあります。この回答には、構文の明確な例があります。

例として小さなスクリプトを書きました。*.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>
于 2013-02-16T13:47:33.583 に答える