【问题标题】:How to pack .net framework Web App on Azure Pipelines如何在 Azure Pipelines 上打包 .net framework Web App
【发布时间】:2020-07-10 16:18:13
【问题描述】:

我需要为使用 .net 框架编写的 Web 应用程序创建一个 azure 工件。 该工件将用于自动化部署。

如果我使用通用工件发布器,我将在工件和其他不需要的项目中包含代码文件。

有一些等效的方法可以为基于 .net 框架的经典 Web 应用构建干净的工件吗?

【问题讨论】:

  • 构建的 .net 框架应用不包含代码文件。
  • 构建只创建二进制文件,这些文件进入 bin 文件夹。该站点由其他文件组成,例如 aspx、cshtml、js 文件。并且都在相同的结构中。只有通过发布项目,才能创建干净的包或安装。
  • 应用程序工作需要这些文件。 CSHtml 不能简单地从浏览器下载(就像 DLL 不能下载一样)。 JS、CSS 和 HTML 按原样下载。因此,您不应该放置任何您不希望普通用户看到的内容。
  • 让我这样说:要创建一个工件,我需要提供一个路径。我可以提供什么路径来包含每个子文件夹中的所有应用程序结构、二进制文件和其他文件,但不包含代码文件或其他项目文件?

标签: .net iis azure-devops azure-pipelines


【解决方案1】:

通过在构建时自动运行发布找到了解决方案。步骤是:

  1. 创建一个发布到文件夹配置文件,名称为 FolderProfile

    我使用了指向 bin\app.publish 的目标路径的默认值

  2. 通过使用FolderProfile 保存的配置文件,将 MS Build 用于发布到文件夹。在构建解决方案任务之后将以下任务添加到 yaml 文件:

    - task: MSBuild@1
      inputs:
        solution: 'MyPortal\MyPortal.csproj'
        msbuildArchitecture: 'x64'
        msbuildArguments: '/p:DeployOnBuild=true /p:PublishProfile=FolderProfile'
    
  3. 通过将另一个任务添加到 yaml 文件中,将工件发布到 azure 管道:

     - task: PublishPipelineArtifact@1
      inputs:
        targetPath: '$(Build.Repository.LocalPath)\MyPortal\bin\app.publish'
        artifact: 'My portal'
        publishLocation: 'pipeline'
    

【讨论】:

  • 感谢您在这里分享您的解决方案,请您接受您的解决方案作为答案吗?因此,对于遇到相同问题的其他成员轻松找到解决方案将很有帮助。祝你有美好的一天:)
猜你喜欢
  • 1970-01-01
  • 2020-12-04
  • 1970-01-01
  • 1970-01-01
  • 2016-04-09
  • 2020-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多