繁体   English   中英

将Web服务部署到Nuget包

[英]Deploy Web Service to Nuget Package

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

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

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

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

您将需要安装Octopus Tools,可以从https://octopus.com/downloads下载。

请参阅http://docs.octopusdeploy.com/display/OD/Using+Octo.exe以获取文档及其使用方法。

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

在对Visual Studio,MSBuild和TeamCity进行了一些尝试之后,我发现了一种对我有用的方法。 我的问题是我不想打包项目目录中的所有文件,而只打包运行应用程序所需的文件。 作为发布时的一种选择,WebDeploy可以很好地处理此问题。 我的csproj文件中已经有设置,可以在构建时创建WebDeploy包,但这是一个zip文件,我不希望该zip文件位于我的Nuget包中。

我发现了两种解决方法:

  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进行部署的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM