MSBuild:发布生成的文件并忽略以前生成的不再可用的文件

时间:2017-02-27 12:54:54

标签: javascript visual-studio tfs msbuild

所以关注这个帖子In Visual Studio, how can I set the Build Action for an entire folder? 解决方案适合我。我有一个webpack配置,可以在已发布的Build文件夹中创建散列文件。我现在遇到的问题是,不再生成的文件仍然可以在线上使用。 这是场景:

  • 在每次构建时,脚本都会从./Build文件夹
  • 中删除所有内容
  • 首次生成index.jsmain.js并使用.csproj文件中的通配符配置发布
  • 第二次./Build文件夹再次清理,只生成index.js,但main.js仍然可以在线直播。

我想这是一个问题,因为.js和.css媒体文件也被捆绑在一起,图像和字体被加载和散列,并且在当前状态下,它将变得非常拥挤相同文件的一堆版本。 知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

好的,我的案例中的问题是发布配置。

将TFS用作VCS。我在高级配置中设置了 Visual Studio Build 并设置了 MSBuild x86 。 MSBuild配置具有通配符,可以包含./Build文件夹中的所有文件和文件夹。

现在问题 - 对于部署/发布我再次使用TFS配置,我有一个任务 Azure App Service Deploy 。这将采用打包的构建配置并将其部署在服务器上。在其他部署选项组中,删除目标中的其他文件。如果没有它,则不会删除已部署包中没有任何匹配项的文件。

没有删除目的地的其他文件选项的例子:

  • 部署位置包含文件:a.js, b.js, c.js
  • 在TFS构建时,使用更新的a.js, c.js和新文件z.js创建新包。包不再包含文件b.js;
  • 部署包
  • 部署后,部署位置包含文件:a.js(updated), b.js, c.js(updated), z.js(new)

示例2,删除目的地的其他文件选项:

  • 部署位置包含文件:a.js, b.js, c.js
  • 在TFS构建时,使用更新的a.js, c.js和新文件z.js创建新包。包不再包含文件b.js;
  • 部署包
  • 部署后,部署位置包含文件:a.js(updated), c.js(updated), z.js(new)b.js文件已从部署位置删除。