【问题标题】:Deploy Web Service to Nuget Package将 Web 服务部署到 Nuget 包
【发布时间】:2015-12-21 01:26:54
【问题描述】:

我在 Visual Studio 解决方案中有多个 WCF 和 WebAPI 服务以及 MVC 网站。目前,我们正在为这些服务和网站创建 WebDeploy 包以部署到 IIS。我开始研究 Octopus Deploy 来部署我们的服务和网站,而不是 WebDeploy。但是,Octopus Deploy 使用 Nuget 包进行部署。

我试图弄清楚如何轻松创建一个 Nuget 包,其中包含通常会发布到 WebDeploy 包中的所有文件。这可能不是项目目录或 bin 目录中的所有文件。我发现 this 博客文章描述了如何在构建过程中将 csproj 打包到 Nuget 包中,但我发现生成的包不包含我的任何依赖 dll。我意识到我可以为这些项目中的每一个手动编写一个 nuspec 并准确包含我想要的文件,但我正在寻找一种更自动化的方式,因为这会在我的项目发生变化时产生更多的维护。

有没有人知道生成仅包含运行应用程序所需文件的 nuspec 或 Nuget 包的好方法,类似于发布到 WebDeploy 包仅包含它需要的文件的方式?

【问题讨论】:

    标签: c# visual-studio wcf msbuild nuget


    【解决方案1】:

    Octopus Deploy 有一个名为“Octo.exe”的 CLI,可以将您的应用程序打包成 NUPKG。

    你需要安装八达通工具,你可以从https://octopus.com/downloads下载

    请参阅http://docs.octopusdeploy.com/display/OD/Using+Octo.exe 了解文档以及如何使用它。

    使用 Octo.exe 的一个很好的例子是持续集成管道的一部分,当构建成功通过时,您调用它来打包应用程序并将其发送到 Octopus 服务器。

    【讨论】:

      【解决方案2】:

      在玩了一些 Visual Studio、MSBuild 和 TeamCity 之后,我发现了一种适合我的方法。我的问题是我不想打包项目目录中的所有文件,只打包运行应用程序所需的文件。 WebDeploy 作为发布时的选项之一很好地处理了这一点。我的 csproj 文件中已有设置,将在构建时创建一个 WebDeploy 包,但这是一个 zip 文件,我不希望在我的 Nuget 包中使用该 zip 文件。

      我找到了两种方法来处理这个问题:

      1. 在 TeamCity 中,我设置了一个新的构建配置,它将打包我拥有的任何 nuspec 文件并将生成的 Nuget 包发布到我的 Octopus Deploy Nuget 源。我发现我可以使用由我的 CI 构建配置创建的现有 WebDeploy 包作为工件依赖项,并且 TeamCity 在抓取工件作为该依赖项的一部分时实际上可以解压缩 zip 文件。然后我的 nuspec 文件引用从 zip 文件中提取的整个文件夹结构并将其打包到 Nupak 中。

      2. 我能够修改我的 csproj 设置以使用我在 Visual Studio 中生成的特定发布配置文件,该配置文件将 WebDeploy 包执行到文件系统。这将导致与 #1 中的 zip 文件中的文件夹结构相同,但只是复制到一个目录中。然后我的 Nuget 构建配置可以简单地获取这些依赖项并以与 #1 中相同的方式打包它们。

      我决定使用选项 #1,因为它需要对我现有的 csproj 和 CI 构建配置进行最小的更改,并且不会破坏我们当前使用 WebDeploy 进行部署的方法。

      【讨论】:

        猜你喜欢
        • 2021-02-20
        • 2013-11-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多