【问题标题】:MSBuild: publish generated files and ignoring previous generated files that are no longer availableMSBuild:发布生成的文件并忽略以前生成的不再可用的文件
【发布时间】:2017-07-18 02:24:30
【问题描述】:

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

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

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

【问题讨论】:

  • 根据您的描述,我不确定您的问题,您能详细描述一下吗?另外,main.js文件是不是没有生成?或者 main.js 文件没有生成但仍然可用?但是为什么在第二次构建时没有生成 main.js 文件,你怎么知道 main.js 文件可用?您介意与我们分享有关此问题的更多详细信息(步骤、.csproj 等),以便我们重现此问题吗?谢谢。
  • .csproj 用于生成文件包含的配置是来自那里的链接。我正在开发一个多页面应用程序,每个应用程序都有一个 .js 文件,我们称它们为 index.js 和 main.js'。它们被用作 webpack 的入口点,因此当 TFS 进入 NPM 任务时,文件会在 Build 文件夹中生成。由于 .csproj(...Include="Build**."`) 中的通配符配置,他们得以上线。在现场你打开前:www.ss.com/Build/js/(index.js|main.js) 文件在那里。
  • 假设你不再有需要main.js的页面,它不再在webpack配置的入口列表中,所以当你运行webpack时它不再生成。在 ./Build/js 文件夹中,您将只有 index.js。它继续直播并且 index.js 已更新。 main.js 不会在 TFS 运行 NPM 任务后生成,但它仍然可以在线使用。如果您在浏览器中打开一个指向它的直接链接,它仍然会存在。希望我的解释很清楚
  • 似乎不再包含在项目中但过去的文件只是保留在发布文件夹中。
  • 你使用VS构建还是TFS构建?如果您使用 Visual Studio 构建,请尝试使用 MSBuild 命令行?如果您使用 TFS 构建,您介意与我们分享构建定义吗?谢谢。

标签: javascript visual-studio tfs msbuild


【解决方案1】:

好的,我的问题在于发布配置。

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

现在解决问题 - 对于部署/发布,我再次使用 TFS 配置,我有一个任务 Azure App Service Deploy。这从构建配置中获取打包并将其部署在服务器上。在Additional Deployment Options组中有Remove Additional Files at Destination。如果没有它,部署包中没有任何匹配项的文件不会被删除。

不带Remove Additional Files at Destination选项的示例1:

  • 部署位置有文件: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)

带有 Remove Additional Files at Destination 选项的示例 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 文件已从部署位置删除。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-04
    • 1970-01-01
    相关资源
    最近更新 更多