2016-07-19 34 views
0

我们的第一步是为我们的.sln文件生成MsBuild。我们通过我们的平台和配置,一切都建立正确。TeamCity nuget pack步骤丢失文件包装

接下来我们要NuGet打包Octopus Deploy使用的所有文件。在这一步中,我们指定我们所有的.csproj文件(不知道为什么,一切都已建成)

创建的软件包包含2个文件夹,其中包含所有需要的文件减号bin和只包含lib文件夹这些项目编译了dll。它不包括项目中引用的任何其他dll。

回答

0

听起来你可能更容易使用Octopack来处理要部署的NuGet包的创建。

步骤1。将Octopack NuGet package安装到可部署应用程序的项目中。

Install-Package OctoPack 

步骤2。确保在主编译之前有一个构建步骤,它将安装任何引用的NuGet包。

enter image description here

步骤3。从下载页面安装TeamCity plugin for Octopus deploy并重新启动TeamCity服务器服务

步骤4。现在,您将在MSBuild运行器配置中看到更多选项,如果您在构建配置中选中以下框,它将为您创建一个NuGet软件包,该软件包应包含成功部署所需的所有内容。

enter image description here

作为一个小尖,我通过参考输出包(而不是等待它为伪影在构建结束连接,因此需要两个发布包直八达通生成配置)

enter image description here

希望这有助于

+0

我会给这个镜头看看它是如何工作的。它看起来好像没有任何来自外部引用的dll被包含在我的包中。即AutoFac,网络框架,EF等。这也包括那些? – user3953989

+0

如果它们被引用为NuGet包,那么安装程序步骤应该在构建之前恢复它们。如果它们不是标准软件包引用,那么它们可能需要在源代码控制之下(不可取) –

+0

以自动方式处理这些类型的非NuGet引用的最佳实践是什么? – user3953989

-1

如果的NuGet包不包装哟你需要从你的项目文件中得到你想要的,你必须创建一个NuGet规范文件并指定应该如何打包。对于一个简单的Web应用程序来说,只需创建一个简单的.spec文件并将其放入Web应用程序目录中,但对于其他可能稍微复杂的项目。查看Nuspec参考资料,了解如何添加您的内容和依赖关系。 https://docs.nuget.org/create/nuspec-reference

+0

每次向项目添加或删除文件时,是否必须手动更新.nuspec? – user3953989

+0

不,但可能需要更新,如果您需要新的依赖关系。 spec文件可以让你完全控制它的封装和封装。 Nuget也可以直接从你的项目文件创建包,但在你的情况下,它不能像你想要的那样工作。 –