以不同的名称发布 ClientApp\dist

Posted

技术标签:

【中文标题】以不同的名称发布 ClientApp\\dist【英文标题】:Publish ClientApp\dist under different name以不同的名称发布 ClientApp\dist 【发布时间】:2021-07-19 23:35:21 【问题描述】:

我在 ClientApp 文件夹下有一个 .NET Core 应用程序(Razor Pages)和另一个 VueJS 应用程序。发布已编译的 SPA 是使用您可以在 Internet 上找到的“著名”sn-p 完成的:

  <Target Name="PublishClientApp" AfterTargets="ComputeFilesToPublish">
    <Exec WorkingDirectory="$(SpaRoot)" Command="npm install" />
    <Exec WorkingDirectory="$(SpaRoot)" Command="npm run build" />
    <ItemGroup>
      <DistFiles Include="$(SpaRoot)\dist\**" />
      <ResolvedFileToPublish Include="@(DistFiles->'%(FullPath)')" Exclude="@(ResolvedFileToPublish)">
        <RelativePath>%(DistFiles.Identity)</RelativePath>
        <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
      </ResolvedFileToPublish>
    </ItemGroup>
  </Target>

但是,SPA 发布在 ClientApp/dist 文件夹下(镜像解决方案结构)。我想在 app/ 文件夹下发布它,但我不确定如何更改这个 msbuild 任务。我的猜测是这个片段中有一些东西 - @(DistFiles->'%(FullPath)'),但尝试调整它并没有给我任何结果。

Solution Structure    Published Folder      Desired Structure
\                     \                     \
 - ClientApp           - ClientApp           - app ( <- dist folder content here )
   - dist                - dist

【问题讨论】:

【参考方案1】:

您可以将生成的ResolvedFileToPublish 项目的元数据更改为不同的结构:

<RelativePath>app\%(DistFiles.RecursiveDir)%(DistFiles.Filename)%(DistFiles.Extension)</RelativePath>

请注意,%(DistFiles.RecursiveDir) 解析为与&lt;DistFiles&gt; 定义中的** 通配符匹配的目录组件。

【讨论】:

以上是关于以不同的名称发布 ClientApp\dist的主要内容,如果未能解决你的问题,请参考以下文章

使用 2 个不同选项卡中的按钮以不同名称保存同一工作簿

在循环中创建多个具有不同名称的对象以存储在数组列表中

如何以不同的名称序列化 Marshmallow 字段

编写循环以更改具有不同名称的 int 数组中的值

如何以不同的名称保存 Visual Studio 项目(如另存为)?

Spring Mongo 聚合查询以从 MongoDB 获取不同的国家名称和国家代码