【问题标题】:Build MSI on Azure在 Azure 上构建 MSI
【发布时间】:2013-05-14 13:10:30
【问题描述】:

我有一个在 Windows azure 上托管的 Web 项目。现在我正在尝试添加客户端 exe 来监视服务器上的某些内容(例如 Windows Tray Notifier for TeamCity) 此安装程序的链接将在我的网站上。

我使用标准的 Windows azure 网站。我使用 git 存储库部署我的项目。

所以问题是:我可以在 Azure 上构建标准设置项目吗?如果不是,我可以用什么来构建这样的项目?我是否将安装程序项目类型更改为 WiX 或类似的东西?

【问题讨论】:

  • 您想提供从您的网站下载的文件吗?或者构建设置项目的原因是什么?
  • 如果 azure 是从我的源代码构建所有内容,我为什么要将构建设置 (30 mb) 添加到 git 存储库中

标签: .net azure windows-installer azure-web-app-service


【解决方案1】:

在 Azure 网站的上下文中,网站项目不是由 MSBuild 编译成可执行的 .Net 代码,而是由 ASP.NET 和 IIS 直接编译。

ASP.NET 使用所谓的BuildProviders 将不同类型的文件构建到单个程序集中,每个网站文件夹生成一个程序集。

由于ASP.NET Compilation 不是成熟的 MSBuild 编译,您无法编译任何类型的项目或任何将使用 MSBuild 进行编译的项目。

理论上(但是,唉,只是理论上!)您可以实现自己的类,该类派生自 BuildProvider 类,该类将生成源代码并在您的 web.config 中引用它以进行 ASP.NET 编译。但即使在这种情况下,您也无法完全控制编译的目标。相反,您的提供程序生成的源代码将在动态链接库中编译,并且没有办法(至少在我看来)将安装程序作为编译器输出。

因此,我建议您将自定义安装程序项目添加到您的解决方案中,在本地构建您的安装程序(如果您愿意,可以使用标准 VS 安装项目或 WiX)并在 GIT 部署之前将新构建的安装程序复制到您的部署文件夹中以及其他文件。

【讨论】:

  • 感谢您的简报。与将构建发布到 Azure 的外部 ALM 工具相比,您如何看待它?
  • @ChristopherPainter ASP.NET 编译背后的最初想法是 AFAIK 以启用一种 xcopy 部署,其中每个文件夹都可能包含自己的代码类型并且网站仍然有效。这将允许早期经典 ASP 的 Web 开发人员在一个网站上结合 VB.NET、C# 和可能的其他语言。超出此范围的所有内容都应使用 MSBuild 或任何其他 .Net 构建器引擎在构建服务器上进行编译。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-01
  • 1970-01-01
  • 2019-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多