.csproj中的CopyToPublishDirectory

时间:2017-09-18 15:10:26

标签: c# asp.net .net node-modules csproj

我在.csproj中使用CopyToPublishDirectory在发布我的dotnet应用时复制文件/文件夹:

<None Update="Views\**\*; wwwroot\**\*">
  <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</None>

有没有办法复制文件夹并在此过程中更改其名称?例如,我想复制我的node_modules文件夹的一个子集,因此我可以使用我的npm依赖项子集创建一个名为node_modules_dev的新文件夹,并通过{{复制它1}}为CopyToPublishDirectory。我想象语法会像这样:

node_modules

谢谢 -

1 个答案:

答案 0 :(得分:4)

这里的诀窍是:

  1. 确保默认情况下尚未包含这些项目,因此以前的glob模式扩展中没有剩余的元数据。这可以通过添加DefaultItemExcludes属性的路径来完成,这样web sdk就会忽略这些文件。
  2. 使用可用于通过glob模式展开的项目的%(RecursiveDir)元数据,并表示任何展开路径的值。这将仅针对Include="…"语法定义,因此为1.
  3. 这将使用Link元数据覆盖新目录的默认目标路径:

    <PropertyGroup>
      <DefaultItemExcludes>$(DefaultItemExcludes);node_modules_dev\**</DefaultItemExcludes>
    </PropertyGroup>
    <ItemGroup>
      <Content Include="node_modules_dev\**\*" Link="node_nodules\%(RecursiveDir)%(FileName)%(Extension)" CopyToPublishDirectory="PreserveNewest" />
    </ItemGroup>