将 Web 服务部署到 Nuget 包
Deploy Web Service to Nuget Package
我在 visual studio 解决方案中有多个 WCF 和 WebAPI 服务以及 MVC 网站。目前,我们正在为这些服务和网站创建 WebDeploy 包以部署到 IIS。我开始研究 Octopus Deploy 来部署我们的服务和网站,而不是 WebDeploy。然而,Octopus Deploy 使用 Nuget 包来部署。
我想知道如何轻松创建一个 Nuget 包,其中包含通常会发布到 WebDeploy 包中的所有文件。这可能不是项目目录或 bin 目录中的所有文件。我发现 this 博客 post 描述了如何在构建过程中将 csproj 打包到 Nuget 包中,但我发现生成的包不包含我的任何依赖 dll。我意识到我可以为这些项目中的每一个手动编写一个 nuspec 并准确地包含我想要的文件,但我正在寻找一种更自动化的方式,因为这会在我的项目更改时创建更多维护。
有没有人知道生成仅包含 运行 应用程序所需文件的 nuspec 或 Nuget 程序包的好方法,类似于发布到 WebDeploy 程序包仅包含其所需文件的方式?
Octopus Deploy 有一个名为 "Octo.exe" 的 CLI,可以将您的应用程序打包到 NUPKG 中。
您需要安装八达通工具,您可以从 https://octopus.com/downloads
下载
请参阅 http://docs.octopusdeploy.com/display/OD/Using+Octo.exe 了解文档及其使用方法。
使用 Octo.exe 的一个很好的例子是持续集成管道的一部分,当构建成功通过时,您调用它来打包应用程序并将其发送到 Octopus 服务器。
在试用 Visual Studio、MSBuild 和 TeamCity 之后,我发现了一种适合我的方法。我的问题是我不想打包项目目录中的所有文件,只打包 运行 应用程序所必需的文件。作为发布时的选项之一,WebDeploy 很好地处理了这一点。我的 csproj 文件中已有设置,将在构建时创建 WebDeploy 包,但这是一个 zip 文件,我不想在我的 Nuget 包中使用该 zip 文件。
我找到了 2 种方法来处理这个问题:
在 TeamCity 中,我设置了一个新的构建配置,它将打包我拥有的所有 nuspec 文件,并将生成的 Nuget 包发布到我的 Octopus Deploy Nuget 提要。我发现我可以使用由我的 CI 构建配置创建的现有 WebDeploy 包作为工件依赖项,而 TeamCity 在获取工件作为该依赖项的一部分时实际上可以解压 zip 文件。然后我的 nuspec 文件引用从 zip 文件中提取的整个文件夹结构并将其打包到 Nupak 中。
我能够修改我的 csproj 设置以使用我在 Visual Studio 中生成的特定发布配置文件,该配置文件将执行 WebDeploy 包到文件系统。这将产生与 #1 中的 zip 文件相同的文件夹结构,但只是简单地复制到一个目录。然后我的 Nuget 构建配置可以简单地获取这些依赖项并以与 #1 中相同的方式打包它们。
我决定采用选项 #1,因为它只需要对我现有的 csproj 和 CI 构建配置进行最少的更改,并且不会破坏我们当前使用 WebDeploy 进行部署的方法。
我在 visual studio 解决方案中有多个 WCF 和 WebAPI 服务以及 MVC 网站。目前,我们正在为这些服务和网站创建 WebDeploy 包以部署到 IIS。我开始研究 Octopus Deploy 来部署我们的服务和网站,而不是 WebDeploy。然而,Octopus Deploy 使用 Nuget 包来部署。
我想知道如何轻松创建一个 Nuget 包,其中包含通常会发布到 WebDeploy 包中的所有文件。这可能不是项目目录或 bin 目录中的所有文件。我发现 this 博客 post 描述了如何在构建过程中将 csproj 打包到 Nuget 包中,但我发现生成的包不包含我的任何依赖 dll。我意识到我可以为这些项目中的每一个手动编写一个 nuspec 并准确地包含我想要的文件,但我正在寻找一种更自动化的方式,因为这会在我的项目更改时创建更多维护。
有没有人知道生成仅包含 运行 应用程序所需文件的 nuspec 或 Nuget 程序包的好方法,类似于发布到 WebDeploy 程序包仅包含其所需文件的方式?
Octopus Deploy 有一个名为 "Octo.exe" 的 CLI,可以将您的应用程序打包到 NUPKG 中。
您需要安装八达通工具,您可以从 https://octopus.com/downloads
下载请参阅 http://docs.octopusdeploy.com/display/OD/Using+Octo.exe 了解文档及其使用方法。
使用 Octo.exe 的一个很好的例子是持续集成管道的一部分,当构建成功通过时,您调用它来打包应用程序并将其发送到 Octopus 服务器。
在试用 Visual Studio、MSBuild 和 TeamCity 之后,我发现了一种适合我的方法。我的问题是我不想打包项目目录中的所有文件,只打包 运行 应用程序所必需的文件。作为发布时的选项之一,WebDeploy 很好地处理了这一点。我的 csproj 文件中已有设置,将在构建时创建 WebDeploy 包,但这是一个 zip 文件,我不想在我的 Nuget 包中使用该 zip 文件。
我找到了 2 种方法来处理这个问题:
在 TeamCity 中,我设置了一个新的构建配置,它将打包我拥有的所有 nuspec 文件,并将生成的 Nuget 包发布到我的 Octopus Deploy Nuget 提要。我发现我可以使用由我的 CI 构建配置创建的现有 WebDeploy 包作为工件依赖项,而 TeamCity 在获取工件作为该依赖项的一部分时实际上可以解压 zip 文件。然后我的 nuspec 文件引用从 zip 文件中提取的整个文件夹结构并将其打包到 Nupak 中。
我能够修改我的 csproj 设置以使用我在 Visual Studio 中生成的特定发布配置文件,该配置文件将执行 WebDeploy 包到文件系统。这将产生与 #1 中的 zip 文件相同的文件夹结构,但只是简单地复制到一个目录。然后我的 Nuget 构建配置可以简单地获取这些依赖项并以与 #1 中相同的方式打包它们。
我决定采用选项 #1,因为它只需要对我现有的 csproj 和 CI 构建配置进行最少的更改,并且不会破坏我们当前使用 WebDeploy 进行部署的方法。