CopyToPublishDirectory

CopyToPublishDirectory

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

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

有没有一种方法可以复制文件夹并在此过程中更改其名称?例如,我想复制node_modules文件夹的一个子集,所以我可以创建一个名为node_modules_dev的新文件夹,其中包含我的npm依赖项的子集,然后通过CopyToPublishDirectory将它复制为node_modules。我以为语法会像这样工作:
<None Update="node_modules_dev/**/*" Rename="node_modules">
  <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</None>

谢谢 -

最佳答案

这里的窍门是:

  • 确保默认情况下尚未包括这些项,因此以前的glob模式扩展中没有剩余的元数据。这可以通过将路径添加到DefaultItemExcludes属性来完成,以便Web sdk将忽略文件。
  • 使用%(RecursiveDir)元数据,该元数据可用于通过glob模式扩展的项目,并表示任何扩展路径的值。因此,仅针对Include="…"语法进行定义。1.

  • 这将使用Link元数据覆盖到新目录的默认目标路径:
    <PropertyGroup>
      <DefaultItemExcludes>$(DefaultItemExcludes);node_modules_dev\**</DefaultItemExcludes>
    </PropertyGroup>
    <ItemGroup>
      <Content Include="node_modules_dev\**\*" Link="node_nodules\%(RecursiveDir)%(FileName)%(Extension)" CopyToPublishDirectory="PreserveNewest" />
    </ItemGroup>
    

    关于c# - .csproj中的CopyToPublishDirectory,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46282720/

    10-13 02:52