如何使用DNX和ASP.NET 5实现持续交付

Bil*_*ani 7 .net c# asp.net coreclr dnx

我已经在.net平台上工作了几年,我必须说我对微软如何使.net跨平台兼容感到印象深刻.

我花了几个小时试图在mac上运行使用CoreCLR构建的小型hello world应用程序.它奏效了.虽然还有很多我还想了解的UNKNOWNS,但有一个问题我无法在google上找到答案.

如何自动部署dnx应用程序.我的意思是,你是否将你的aspnet 5应用程序编译成一个nuget包,然后在你的linux服务器上恢复它(我从未使用过Linux,所以不确定nuget是如何在那里工作的),并运行dnx命令?或者只是拉链并将其直接推送到服务器?

对不起,这对我来说都很新鲜,所以我的问题可能听起来很愚蠢.我只是想知道什么是我可以为我的asp.net 5应用程序实现持续交付的最佳方式.我的最终目标是在linux容器上托管我的应用程序.

Vic*_*aci 4

您可以使用dnu publish --runtime <name of runtime> --no-source。这将创建一个包含您的应用程序、其依赖项和运行时的文件夹。然后,您所要做的就是将该文件夹获取到您的服务器上。

如何移动文件实际上取决于您的场景...可能是 FTP、存储、Kudu(如果您在 Azure 网站上)等。

另一种选择是在服务器上进行恢复。虽然这会在您发布时减少应用程序的大小,但您必须在服务器上恢复包,这可能不安全,并且还可能导致应用程序中断,因为源上可能存在较新的、不兼容的包。

虽然没有适合所有情况的正确答案,但我发现如果您想要最可靠和一致的结果,您应该发布所有内容,在本地测试,然后将捆绑包复制到您的服务器上。

对于 docker,我推荐同样的东西。使用运行时且无源进行发布,并创建一个包含生成文件夹的容器。