Aspnetcore: ์‚ฌ์šฉ ์ค‘์ธ ํŒŒ์ผ๋กœ ์ธํ•ด ๋ฐฐํฌ ์‹คํŒจ

์— ๋งŒ๋“  2015๋…„ 06์›” 23์ผ  ยท  200์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: dotnet/aspnetcore

VSO ๋นŒ๋“œ ์„œ๋ฒ„ vNext์—์„œ Azure ์›น ์‚ฌ์ดํŠธ๋กœ ๋ฐฐํฌํ•  ๋•Œ ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

Error Code: ERROR_FILE_IN_USE
More Information: Web Deploy cannot modify the file 'AspNet.Loader.dll' on the destination because it is locked by an external process. In order to allow the publish operation to succeed, you may need to either restart your application to release the lock
, or use the AppOffline rule handler for .Net applications on your next publish attempt.
Learn more at: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_FILE_IN_USE.

๋ฐฐํฌ ์ „์— ๋‹ค์‹œ ์‹œ์ž‘ azure ์›น ์‚ฌ์ดํŠธ ๋ช…๋ น์„ ์ถ”๊ฐ€ํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ๋„ˆ๋ฌด ์ž์ฃผ ๋“ค์–ด์˜ค๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋ชจ๋‘๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ ์œ„ํ•ด ์šฐ๋ฆฌ๋Š” ์œ„์˜ ์ด๋ก ์ด ์˜ณ๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„ ๋ฒ„๊ทธ๋Š” ANCM์˜ ์ตœ์‹  ๋ฒ„์ „์—์„œ ํšŒ๊ท€์ด๊ณ  ํ•ด๋‹น ๋ฒ„์ „์€ 12์›”์— Azure App Service์— ๋ฐฐํฌ๋˜์–ด ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ‘์ž๊ธฐ ์ด ๋ฌธ์ œ์— ๋ถ€๋”ช์ณค์Šต๋‹ˆ๋‹ค.

๊ณ„ํš์€ ASP.NET Core ํŒ€์—์„œ ANCM ์ˆ˜์ • ์‚ฌํ•ญ์„ ๊ฐ€์ ธ์™€ App Service์— ๋ฐฐํฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ETA๋Š” ์•„์ง ์—†์ง€๋งŒ 1์›”์— ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ชจ๋“  200 ๋Œ“๊ธ€

WebDeploy ๋ฐฐํฌ๋ฅผ ๋ฐฉํ•ดํ•˜๋Š” Azure VM์˜ IIS ํŒŒ์ผ ์ž ๊ธˆ๊ณผ ์œ ์‚ฌํ•œ ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ์„ธ ๊ฐ€์ง€ WebDeploy ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. AppPool ์ค‘์ง€, โ€‹โ€‹๋ฐฐํฌ, AppPool ๋‹ค์‹œ ์‹œ์ž‘. ๋‚ด ์Šคํฌ๋ฆฝํŠธ ์ฐธ์กฐ ; ์„ธ ๊ฐ€์ง€ WebDeploy ๋ช…๋ น์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ Azure Apps์™€ ์œ ์‚ฌํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

beta6์—์„œ ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€! ๋‚ด vNext ์•ฑ์„ ๊ฒŒ์‹œํ•  ๋•Œ ๋‚ด Visual Studio 2015๊ฐ€ ์‹ค์ œ๋กœ ์ •์ง€๋ฉ๋‹ˆ๋‹ค(beta6 ๋ฐ beta7 ๋ชจ๋‘ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค).

๋ฐฐํฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด Microsoft์—์„œ ์ œ๊ณตํ•œ ์Šคํฌ๋ฆฝํŠธ ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด PublishAspNet5Website.ps1 ์— ์ค„์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์›น ์•ฑ์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Restart-AzureWebsite -Name $websiteName

์ด ๊ฒŒ์‹œ๋ฌผ์— ์„ค๋ช…๋œ ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ ์ˆ˜์ • ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค. Azure Web App ์Šฌ๋กฏ์— ๋Œ€ํ•œ ASP.NET 5 ๋ฐฐํฌ ๋ฌธ์ œ ํ•ด๊ฒฐ

@brandonmartinez , ์›น์‚ฌ์ดํŠธ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์€ ๋„์›€์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ”„๋กœ๋•์…˜ ์›น์‚ฌ์ดํŠธ๋Š” ๊ณ„์†ํ•ด์„œ ์š”์ฒญ์„ ๋ฐ›์•„ ํŒŒ์ผ์„ ๋‹ค์‹œ ์ž ๊ธ€ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ IIS์™€ Azure ์›น ์‚ฌ์ดํŠธ๋ฅผ ๋ชจ๋‘ ์—…๋ฐ์ดํŠธํ•˜๋Š” ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€ ์›น ์‚ฌ์ดํŠธ์˜ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ํ’€์„ ์ข…๋ฃŒํ•˜๊ณ  ํŒŒ์ผ์„ ์—…๋ฐ์ดํŠธํ•œ ๋‹ค์Œ ์›น ์‚ฌ์ดํŠธ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ @GuardRex ์˜ ๋งํฌ ๋ฅผ ๋”ฐ๋ฅด์‹ญ์‹œ์˜ค.

๊ทธ๋Ÿฌ๋‚˜ VS2015๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ๋ณธ ์กฐ๊ฑด์—์„œ ์ž‘์—…ํ•  ๋•Œ ์‚ฌ์šฉ์ž ์ง€์ • ๋ฐฐํฌ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค.

์ƒˆ๋กœ์šด HttpPlatformHandler ์ธํ”„๋ผ(๋” ์ด์ƒ AspNet.Loader.dll์ด ํ•„์š”ํ•˜์ง€ ์•Š์Œ)๊ฐ€ ์ข€ ๋” ๊ด€๋Œ€ํ•ด์ง€๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์„œ ์ˆจ์„ ๊ฑฐ๋‘์ง€๋Š” ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค. ์ž ๊ธด ๋˜ ๋‹ค๋ฅธ .dll์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@rubenprins VS์˜ Azure SDK ๋„๊ตฌ๋ฅผ ํ†ตํ•ด ์ €๋„ ์‚ฌ์šฉํ•˜๋Š” ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

VM์— ๋Œ€ํ•œ PS ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” PS ๋ช…๋ น์ด ์žˆ์Šต๋‹ˆ๋‹ค. https://github.com/GuardRex/net5-iis-ps-publish/blob/7623122dbfdc55a7c53c8edd2e97443e0eea22c9/net5-iis-ps-publish.ps1#L389 -L396

aspnet/vsweb-publish ๋„ ๋งค์šฐ ํฅ๋ฏธ๋กญ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ offline-template.html ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ๊ฐ™์œผ๋ฉฐ ๊ทธ ๋ฐฉ๋ฒ•์ด dll ์ž ๊ธˆ ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•˜์ง€ ๋ชปํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค ... AppPool์„ ์ค‘์ง€ํ•˜๊ณ  AppPool์„ ๋ฐฐํฌํ•˜๊ณ  ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ ์•ˆ์ •์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ž‘์—… ์ ‘๊ทผ ๋ฐฉ์‹.

VS2015์˜ ๊ธฐ๋ณธ ์กฐ๊ฑด์—์„œ ์ž‘์—…ํ•  ๋•Œ ์‚ฌ์šฉ์ž ์ง€์ • ๋ฐฐํฌ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ํ•œ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. 'ํŒŒ์ผ ์‹œ์Šคํ…œ์— ๊ฒŒ์‹œ'๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ  ๊ฒŒ์‹œ ์งํ›„์— MSDeploy ๋น„ํŠธ๊ฐ€ ํฌํ•จ๋œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์—ฐ๊ฒฐํ•˜๋ฉด ์—ฌ๋Ÿฌ VM์— ๋Œ€ํ•œ ๋งค์šฐ ๊ฐ„๋‹จํ•˜๊ณ  ์œ ์šฉํ•œ ๋ฐฐํฌ ์Šคํ† ๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•ด์กŒ์Šต๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ๋Š” ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— VM์—์„œ VM์œผ๋กœ ๋ฐ”๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ์ข‹์€ ์ปคํ”ผ ๋ธŒ๋ ˆ์ดํฌ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. :์›ƒ๋‹ค:

Azure Resource Manager ํŒ€๊ณผ ํ•จ๊ป˜ Azure Resource Manager๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ธํ„ฐ๋„ท ์—ฐ๊ฒฐ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ ๊ตฌ์„ฑ ์‹œ์ž‘ํ•˜๊ธฐ ์—์„œ ๋ฐฐํฌํ•˜๋Š” ๋™์•ˆ VM์— ํŠธ๋ž˜ํ”ฝ ์ „์†ก์„ ์ผ์‹œ์ ์œผ๋กœ ์ค‘์ง€ํ•˜๋„๋ก ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ์— ์ง€์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์งˆ๋ฌธ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์–ด์จŒ๋“  ... @pekkah ๊ฐ€ ์ œ๊ธฐํ•œ ๋‹น๋ฉดํ•œ ์ฃผ์ œ๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค. PS ๋ช…๋ น์ด ์ž‘๋™ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์œผ๋ฏ€๋กœ VSO ๋นŒ๋“œ์—์„œ ์‹คํ–‰ํ•˜๋Š” ์˜ต์…˜์„ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

Microsoft/vso ์—์ด์ „ํŠธ ์ž‘์—…
๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค์—์„œ ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰
Azure Continuous Deployment ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์œ„ํ•ด Team Foundation Service(Visual Studio Online)์—์„œ ์‚ฌ์ „ ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰
Visual Studio Online์˜ ์ƒˆ๋กœ์šด ๋นŒ๋“œ ์ž๋™ํ™” ๊ธฐ๋Šฅ

... ์˜ˆ ... ๊ทธ๋Ÿฐ ์ผ์ด ๋‹น์‹ ์„ ์œ„ํ•ด ์ผ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ๋„ ๊ฐ™์€ ๋ฌธ์ œ...

์•„์ง ๊ณต์‹ ์†”๋ฃจ์…˜์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ค‘

๋ธŒ๋ฃจ๋…ธ

@moozzyk , ํ•ด๋‹น ๋ฌธ์ œ๋Š” msdeploy์™€ ๊ฐ™์€ ์ „์šฉ ๋„๊ตฌ๋ฅผ ํ†ตํ•ด์„œ๋งŒ ๋ฐฐํฌ๋ฅผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค. Xcopy/ํŒŒ์ผ ๋™๊ธฐํ™” ๋ฐฐํฌ๋Š” ์—ฌ์ „ํžˆ ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฉฐ, ASP.NET v1-4์—์„œ๋งŒ ์ž‘๋™ํ•˜๋Š” ๋งŽ์€ CI ์‹œ๋‚˜๋ฆฌ์˜ค๋„ ์ฐจ๋‹จ/๋ฐฉํ•ดํ•ฉ๋‹ˆ๋‹ค.

ASP.NET Core 1.0 RC2(Visual Studio 2015.2 ํฌํ•จ) MSDeploy to IIS 8 on Windows 2012 R2(์„œ๋ฒ„์šฉ ์ตœ์‹  ๋„๊ตฌ ํฌํ•จ) ๋ฌธ์ œ๊ฐ€ ์—ฌ์ „ํžˆ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. dotnet.exe ํ”„๋กœ์„ธ์Šค๋ฅผ ์ข…๋ฃŒํ•˜๊ฑฐ๋‚˜ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ํ’€์„ ์žฌํ™œ์šฉํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋Š” ์„œ๋ฒ„์— ๋Œ€ํ•œ ์›๊ฒฉ ๋ฐ์Šคํฌํ†ฑ ์•ก์„ธ์Šค๊ฐ€ ํ•„์š”ํ•˜๋ฉฐ ์ˆœ์กฐ๋กœ์šด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

@dg9ngf - ์ด๊ฒƒ์€ ํ˜„์žฌ web.deploy์˜ ๋ฒ„๊ทธ์ž…๋‹ˆ๋‹ค. Azure์šฉ app_offline.htm ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ–ˆ์ง€๋งŒ ๋กœ์ปฌ๋กœ ๋ฐฐํฌํ•  ๋•Œ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋น„ํ™œ์„ฑํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒŒ์‹œ ํ”„๋กœํ•„(PublishProfiles->*.pubxml)์„ ์—ด๊ณ  ๋‹ค์Œ์„ ๋ณ€๊ฒฝํ•ด ๋ณด์‹ญ์‹œ์˜ค.

<EnableMSDeployAppOffline>False</EnableMSDeployAppOffline>

์—๊ฒŒ

<EnableMSDeployAppOffline>True</EnableMSDeployAppOffline>

์ด๊ฒƒ์ด ์ž‘๋™ํ•˜์ง€ ์•Š์œผ๋ฉด @vijayrkn ์—๊ฒŒ ๋ฌธ์˜ํ•˜์‹ญ์‹œ์˜ค.

VS ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ msdeploy ํ”„๋กœํ•„์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒŒ์‹œํ•˜๋Š” ๊ฒฝ์šฐ ์ด ์†์„ฑ์ด pubxml์— ์ž๋™์œผ๋กœ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.

<EnableMSDeployAppOffline>True</EnableMSDeployAppOffline>

์ถœ๋ ฅ ์ฐฝ์— ์ด์™€ ์œ ์‚ฌํ•œ msdeploy ๋ช…๋ น์ด ํ‘œ์‹œ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

"C:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy.exe" -source:manifest='C:\Users\vramak\AppData\Local\Temp\PublishTemp\obj\SourceManifest.xml' -dest:manifest='C:\Users\vramak\AppData\Local\Temp\PublishTemp\obj\DestManifest.xml',ComputerName='https://netcoreappwithdb.scm.azurewebsites.net/msdeploy.axd',UserName='$netcoreappwithdb',Password='{PASSWORD-REMOVED-FROM-LOG}',IncludeAcls='False',AuthType='Basic' -verb:sync -enablerule:AppOffline -enableRule:DoNotDeleteRule -retryAttempts:20

-e nablerule: ๋ช…๋ น์˜ AppOffline์€ ๋ฐฐํฌ ์ค‘์— appOffline ์ถ”๊ฐ€๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ์ง€์ • appOffline ์ฝ˜ํ…์ธ ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ pubxml์—์„œ ์ด ์†์„ฑ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

<AppOfflineTemplate>Path to app offline</AppOfflineTemplate>

ํ•ด๋‹น ์†์„ฑ์€ Visual Studio์—์„œ ๋งŒ๋“  .pubxml ํŒŒ์ผ์— _not_ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ถ”๊ฐ€ํ–ˆ์ง€๋งŒ ๋ฐ”๋€Œ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. -e nablerule:AppOffline ์ธ์ˆ˜๋Š” ์ถœ๋ ฅ ์ฐฝ์— ํ‘œ์‹œ๋˜์ง€ _์•Š์Šต๋‹ˆ๋‹ค_.

์ถœ๋ ฅ ์ฐฝ์— ํ‘œ์‹œ๋œ msdeploy ๋ช…๋ น์ค„์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋˜ํ•œ pubxml์— WebPublishMethod๊ฐ€ 'MSDeploy'์ธ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
<WebPublishMethod>MSDeploy</WebPublishMethod>

์•„๋‹ˆ์š”, ํŒŒ์ผ์—๋Š” <WebPublishMethod>FileSystem</WebPublishMethod> ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ์ถœ๋ ฅ ์ฐฝ์˜ ๋ช…๋ น์ค„์ž…๋‹ˆ๋‹ค. Executing command ["C:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy.exe" -source:manifest='C:\Users\yves\AppData\Local\Temp\PublishTemp\obj\SourceManifest.xml' -dest:manifest='C:\Users\yves\AppData\Local\Temp\PublishTemp\obj\DestManifest.xml' -verb:sync -enableRule:DoNotDeleteRule -retryAttempts:20 -disablerule:BackupRule]

์ด ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์— ์„ค๋ช…๋œ ๋Œ€๋กœ VSTS์—์„œ "Azure Web App Deployment" ์ž‘์—…์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐํฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. http://donovanbrown.com/post/2016/05/30/DevOps-for-ASPNET-Core-RC2

ํ•ด๋‹น ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ <EnableMSDeployAppOffline>True</EnableMSDeployAppOffline> ๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์•ˆ๋…•ํ•˜์„ธ์š”, ์ €๋Š” Azure์—์„œ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ๊ฒช์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์œผ๋กœ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. https://github.com/davidebbo/WAWSDeploy/issues/14

@dg9ngf ํ˜„์žฌ ๋ฒ„์ „์˜ powershell ์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” WebPublishMethod - 'MSDeploy'์— ๋Œ€ํ•ด์„œ๋งŒ appOffline์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ฒŒ์‹œ์— ๋Œ€ํ•œ AppOffline ์ง€์›์€ ๋‹ค์Œ ๋ฆด๋ฆฌ์Šค์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@bojingo ์ €๋„ ๊ฐ™์€ ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ์ด๊ฒƒ์„ ์•Œ์•„ ๋ƒˆ์Šต๋‹ˆ๊นŒ?

@davenewza : ํ•ด๋‹น ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์„ ๋‹ค์‹œ ๋ฐฉ๋ฌธํ•˜์‹œ๋ฉด ๋Œ“๊ธ€์— ํ•ด๊ฒฐ์ฑ…์ด ์žˆ์Šต๋‹ˆ๋‹ค.
http://donovanbrown.com/post/2016/05/30/DevOps-for-ASPNET-Core-RC2

๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์ดํŠธ๋ฅผ ์ค‘์ง€/์‹œ์ž‘ํ•˜๋ ค๋ฉด VSTS ๋‹จ๊ณ„๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ๋ฐฐํฌ ์Šฌ๋กฏ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ด์ƒ์ ์ธ ์†”๋ฃจ์…˜(์‹ค์ œ๋กœ๋Š” ์ƒ๋‹นํžˆ ์ ˆ๋ฆ„๋ฐœ์ด)๊ณผ๋Š” ๊ฑฐ๋ฆฌ๊ฐ€ ๋ฉ€์ง€๋งŒ ๊ฐœ๋ฐœ/ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์—์„œ๋Š” ์ œ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

msdeploy ๊ธฐ๋ฐ˜์ด๊ณ  ์ˆ˜์ •ํ•˜๊ฒ ๋‹ค๊ณ  ์•ฝ์†ํ•˜๋Š” ์›น ์•ฑ ๋ฐฐํฌ VSTS ์ž‘์—…์˜ ์ƒˆ๋กœ์šด ๋ฏธ๋ฆฌ ๋ณด๊ธฐ ARM ๋ฒ„์ „์ด ์žˆ์ง€๋งŒ ๊ตฌ๋…์— ๋Œ€ํ•œ ์„œ๋น„์Šค ์ฃผ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ•„์š”ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์šด์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฒˆ๊ฑฐ๋กœ์›€์ด ์žˆ์—ˆ๋‹ค. ์ž‘๋™ํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
https://github.com/Microsoft/vsts-tasks/tree/master/Tasks/AzureRmWebAppDeployment

@vijayrkn VS2015 ์˜ ์›น ๊ฒŒ์‹œ ๋Œ€ํ™” ์ƒ์ž์—๋Š” msdeploy๋ฅผ ์„ค์ •ํ•˜๋Š” ์˜ต์…˜์ด ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉฐ WebPublishMethod=FileSystem์— ๋Œ€ํ•œ ์˜ต์…˜๋งŒ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

WebPublishMethod=msdeploy์šฉ ์ƒ˜ํ”Œ .pubxml์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@tomfanning ASP.NET ํ•ต์‹ฌ ์ฝ˜์†” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฒฝ์šฐ ํ˜„์žฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ๊ฒŒ์‹œ ์˜ต์…˜์€ ํŒŒ์ผ ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. ์ฝ˜์†” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฒŒ์‹œํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๊นŒ? ์›น ์•ฑ์˜ ๊ฒฝ์šฐ ์ด 4๊ฐ€์ง€ ์˜ต์…˜(webdeploy, ์›น ๋ฐฐํฌ ํŒจํ‚ค์ง€, ํŒŒ์ผ ์‹œ์Šคํ…œ ๋ฐ ftp)์„ ๋ชจ๋‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์ƒ˜ํ”Œ webdeploy pubxml - https://github.com/dotnetpublish/AspNetCoreBlogList/tree/master/src/AspNetCoreBlogList/Properties/PublishProfiles

์›น ์•ฑ์ด๊ณ  ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ฒŒ์‹œ ์˜ต์…˜๋งŒ ํ‘œ์‹œ๋˜๋Š” ๊ฒฝ์šฐ xproj์—์„œ ์ด๋ฅผ ๊ฐ€์ ธ์˜ค๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
<Import Project="$(VSToolsPath)\DotNet.Web\Microsoft.DotNet.Web.targets" Condition="'$(VSToolsPath)' != ''" />

@bojingo ์„œ๋น„์Šค ์ฃผ์ฒด๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ  ์ธํ„ฐ๋„ท์— ์—ฌ๋Ÿฌ ์ž์Šต์„œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ๋งํฌ๊ฐ€ ์—†์ง€๋งŒ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋‚ด ๋ฌธ์ œ๋Š” ์ž‘์—…์— ASP Net Core ๊ฒŒ์‹œ์—์„œ ์ƒ์„ฑ๋˜์ง€ ์•Š๋Š” parameters.xml ํŒŒ์ผ์ด ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค... :(

๋‚˜๋Š” TFS 2015 ์˜จํ”„๋ ˆ๋ฏธ์Šค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ ์ด๊ฒƒ์€ ์—„์ฒญ๋‚˜๊ฒŒ ์„ฑ๊ฐ€์‹  ๋ฌธ์ œ๋กœ ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ €๋„ ์ด ๋ฌธ์ œ๋กœ...

๋‚ด ์†”๋ฃจ์…˜์€ ๋ฐฐํฌํ•  ์Šคํ…Œ์ด์ง• ์Šฌ๋กฏ์„ ์ค‘์ง€๋œ ์ƒํƒœ๋กœ ์œ ์ง€ํ•œ ๋‹ค์Œ ๊ฒŒ์‹œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(์ž๋™ ์Šค์™‘ ์ž‘๋™). ๋‹ค์‹œ ์‹œ์ž‘ํ•œ ๋‹ค์Œ ๋ฐฐํฌ๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์Œ(VSTS๋กœ ๋ฐฐํฌ)

๋‚˜๋Š” ์Šคํ…Œ์ด์ง• ์Šฌ๋กฏ์— ๋Œ€ํ•œ ์˜ต์…˜์„ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” Azure Web Apps์™€ ํ•จ๊ป˜ ๋ฌธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹ค์Œ ์˜ต์…˜์„ ํ™•์ธํ•˜๋ฉด ํšจ๊ณผ๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๋ฃจํŠธ์— ๋นˆ app_offline.html์„ ์‚ฌ์šฉํ•˜์—ฌ ์•ฑ ๋„๋ฉ”์ธ์„ ์•ˆ์ „ํ•˜๊ฒŒ ๋‹ค์šดํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐฐํฌ์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹Œ ๋Œ€์ƒ์—์„œ ํŒŒ์ผ ์ œ๊ฑฐ

Visual Studio 2015 ์—…๋ฐ์ดํŠธ 3์„ ์‚ฌ์šฉํ•˜์—ฌ asp.net core 1.1/.net framework 4.5.2 ์‚ฌ์ดํŠธ๋ฅผ IIS์— ๊ฒŒ์‹œํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์ดํŠธ๋ฅผ ๋‹ค์šด์‹œํ‚ค์ง€ ์•Š๋Š” App_Offline.htm ๋ฅผ ๋–จ์–ด๋œจ๋ฆฝ๋‹ˆ๋‹ค. ์„œ๋ฒ„์—์„œ app_offline.htm ๋กœ ์ด๋ฆ„์„ ๋ฐ”๊พธ๋ฉด ์‚ฌ์ดํŠธ๊ฐ€ ๋‹ค์šด๋ฉ๋‹ˆ๋‹ค.

์ด app_offline.htm์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

https://github.com/aspnet/IISIntegration/issues/81

๋ฐฐํฌ์ž๋Š” app_offline.htm์„ ์—…๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค(๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„ ์•ˆ ํ•จ).

๋ฐฉ๊ธˆ ๋‹ค์‹œ ๊ฒŒ์‹œํ–ˆ๋Š”๋ฐ App_Offline.htm ์ด ๋–จ์–ด์กŒ๊ณ  ๋‚ด ์‚ฌ์ดํŠธ๊ฐ€ ๋‹ค์šด๋˜์ง€ ์•Š์•˜๊ณ  ํŒŒ์ผ ์‚ฌ์šฉ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. app_offline.htm ๋กœ ๋ณ€๊ฒฝํ•˜๋ฉด ์‚ฌ์ดํŠธ๊ฐ€ ๋‹ค์šด๋˜๊ณ  ์˜ค๋ฅ˜ ์—†์ด ๊ฒŒ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ณต์œ  UNC ๊ฒฝ๋กœ์—์„œ ํ˜ธ์ŠคํŒ…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ฐจ์ด๊ฐ€ ์žˆ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

@Tratcher - App_Offline.htm์˜ ๋Œ€์†Œ๋ฌธ์ž๊ฐ€ ์—ฌ๊ธฐ์„œ ์ฐจ์ด๊ฐ€ ๋‚˜๋Š” ์ด์œ ๋ฅผ ์•„์‹ญ๋‹ˆ๊นŒ?

Azure ์•ฑ ์„ค์ •์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

MSDEPLOY_RENAME_LOCKED_FILES = 1

... ์—ฌ๊ธฐ์— ์„ค๋ช…๋œ ๋Œ€๋กœ:
https://github.com/Microsoft/vsts-tasks/issues/1607#issuecomment -260946957

YMMV

@BenBarreth ๋น„ Azure์— ์ ์šฉ ๊ฐ€๋Šฅํ•œ ์œ ์‚ฌํ•œ ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค @jdshkolnik

MSDEPLOY_RENAME_LOCKED_FILES = 1์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ฐฐํฌ๊ฐ€ ์„ฑ๊ณตํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜์ง€๋งŒ ๋Ÿฐํƒ€์ž„์— ์ƒˆ DLL์ด ์„ ํƒ๋˜์ง€ ์•Š์Œ์„ ์˜๋ฏธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
https://github.com/Azure/azure-webjobs-sdk-script/issues/569#issuecomment -264490818

๊ทธ๊ฒƒ์€ ๋‚˜์—๊ฒŒ ์ ์ ˆํ•œ "์ˆ˜์ •"์ฒ˜๋Ÿผ ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฐฐํฌ ์‹คํŒจ๋ฅผ ์ˆจ๊ธธ ๋ฟ์ž…๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ์—์„œ ์ง„์ •ํ•œ ์ˆ˜์ •์„ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
https://github.com/Azure/azure-webjobs-sdk-script/issues/1023

์ •๋ง๋กœ ์ด๊ฒƒ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. RM ์›น ๋ฐฐํฌ VSTS ์ž‘์—…์ด "์•ฑ ์˜คํ”„๋ผ์ธ์œผ๋กœ ์ „ํ™˜" ์˜ต์…˜์„ ์„ ํƒํ•˜์—ฌ ์ด ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ์ด๋ฒˆ ์ฃผ๋ง๋ถ€ํ„ฐ ๊ณ„์† ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐฐํฌ ์Šฌ๋กฏ ์ค‘์ง€, ๋ฐฐํฌ ๋ฐ ๋‹ค์‹œ ์‹œ์ž‘์œผ๋กœ ๋˜๋Œ์•„๊ฐ”์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ด ๋ฌธ์ œ๋Š” ์ง€๋‚œ์ฃผ ๊ธˆ์š”์ผ์— ๋ฐœ์ƒํ–ˆ์œผ๋ฉฐ ๊ทธ ์ดํ›„๋กœ ๋ฐฐํฌ๊ฐ€ ์ฐจ๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค...

์—ฌ๊ธฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. Always On = true์ธ ์‚ฌ์ดํŠธ์—๋งŒ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚ด ๊ตฌ์„ฑ์—์„œ MSDEPLOY_RENAME_LOCKED_FILES = 1์„ ์„ค์ •ํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ ์—ฌ์ „ํžˆ ์ด ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ ๋‚ด ์„œ๋ฒ„์—์„œ ๋นŒ๋“œ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒƒ์€ ๊ฑฐ์˜ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋ถˆ๊ณผ ๋ฉฐ์น  ์ „์— ์ผ์–ด๋‚˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฒˆ ์ฃผ์— ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ์ฃผ๊นŒ์ง€ ์•ฑ์„ ์˜คํ”„๋ผ์ธ์œผ๋กœ ์ „ํ™˜ = true ์„ค์ •์„ ์‚ฌ์šฉํ•˜์—ฌ VSTS์— AzureRM ์•ฑ ์„œ๋น„์Šค๋ฅผ ๋ฐฐํฌํ•˜๋Š” ๊ฒƒ์€ ์ผ๊ด€๋˜๊ฒŒ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์ด ์„ค์ •์ด ๋ฌด์‹œ๋˜๊ฑฐ๋‚˜ ์„œ๋น„์Šค๊ฐ€ ์ œ ์‹œ๊ฐ„์— ์˜คํ”„๋ผ์ธ ์ƒํƒœ๊ฐ€ ๋˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ฆด๋ฆฌ์Šค๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋™์•ˆ ์•ฑ ์„œ๋น„์Šค๋ฅผ ์ˆ˜๋™์œผ๋กœ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ ์ค‘์ง€/์‹œ์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์—ฌ๊ธฐ์— ์žˆ์Šต๋‹ˆ๋‹ค. AzureRm์€ ๋ช‡ ๋‹ฌ ๋™์•ˆ ์ž‘๋™ํ•˜๋‹ค๊ฐ€ ๊ฐ‘์ž๊ธฐ ์ค‘์ง€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ๋งˆ์ง€๋ง‰ ๋ฐฐํฌ๋Š” 2์ฃผ ์ „ 12์›” 5์ผ์ด์—ˆ๊ณ  ์ง€๊ธˆ์€ 12์›” 20์ผ์— Error_File_In_Use๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ˆ˜๋™ ์‹œ์ž‘/์ •์ง€๋กœ ๋Œ์•„๊ฐ€์•ผ ํ•˜๋Š” ๊ฒƒ์ด ๋งค์šฐ ์งœ์ฆ๋‚ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ CI/๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค์˜ ์ผ๋ถ€๋กœ ํ˜„์žฌ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” Powershell์˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋„์›€์„ ์ฃผ์‹  @appveyor ๋ถ„๋“ค๊ป˜ ํŠน๋ณ„ํžˆ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

$username = $env:deployusername
$password = $env:deploypassword
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username,$password)))
$Headers = @{
  'Authorization' = ('Basic {0}' -f $base64AuthInfo)
  'If-Match'      = '*'
}
$apiUrl = "https://YourAzureWebsite.scm.azurewebsites.net/api/vfs/site/wwwroot/app_offline.htm"
$filePath = "app_offline_tmp.htm"
Invoke-RestMethod -Uri $apiUrl -Headers $Headers -Method PUT -InFile $filePath -ContentType "multipart/form-data"

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด HTTP PUT ๋Œ€์†Œ๋ฌธ์ž๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ app_offline.htm ํŒŒ์ผ์— Kudu REST API ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐํฌ์— ์—†๋Š” ํŒŒ์ผ์„ ์ œ๊ฑฐํ•˜๋„๋ก WebDeploy๋ฅผ ๊ตฌ์„ฑํ–ˆ์œผ๋ฏ€๋กœ ๋ฐฐํฌ์˜ ์ผ๋ถ€๋กœ ํŒŒ์ผ์„ ์ž๋™์œผ๋กœ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ๋ฐฐํฌ๊ฐ€ ์™„๋ฃŒ๋œ ํ›„ ํŒŒ์ผ์„ ์ œ๊ฑฐํ•˜๋ ค๋ฉด HTTP DELETE ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋‹จ๊ณ„๋ฅผ ๋ฐ˜๋ณตํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

AzureRM ์ž‘์—… ์ „์— Trackyon Stop์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์ดํ›„์— Trackyon Start ์ž‘์—…์„ ์ถ”๊ฐ€ํ•˜๋ฉด ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ TakeAppOffline = true์ผ ๋•Œ ํ•„์š”ํ•˜์ง€ ์•Š์ง€๋งŒ ์ž‘๋™ํ•˜๋ฉฐ ์ˆ˜๋™ ๋˜๋Š” ์Šคํฌ๋ฆฝํŒ…์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๋ฆด๋ฆฌ์Šค ์ •์˜์— ์ž‘์—…์„ ์ถ”๊ฐ€ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. Trackyon ๋‹จ๊ณ„๋Š” ์„ค์ •ํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.

2016๋…„ 12์›” 21์ผ ์˜ค์ „ 12์‹œ 10๋ถ„์— Chad T < [email protected] [email protected] >์ด(๊ฐ€) ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์€ CI/๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค์˜ ์ผ๋ถ€๋กœ ํ˜„์žฌ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” Powershell์˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋„์›€์„ ์ฃผ์‹  @appveyor https://github.com/appveyor ์—ฌ๋Ÿฌ๋ถ„๊ป˜ ํŠน๋ณ„ํžˆ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

$ ์‚ฌ์šฉ์ž ์ด๋ฆ„ = $ ํ™˜๊ฒฝ:๋ฐฐํฌ ์‚ฌ์šฉ์ž ์ด๋ฆ„
$password = $ env:deploypassword
$base64AuthInfo = [๋ณ€ํ™˜]::ToBase64String([ํ…์ŠคํŠธ.์ธ์ฝ”๋”ฉ]::ASCII.GetBytes(("{0}:{1}" -f $username,$password)))
$ํ—ค๋” = @{
'์Šน์ธ' = ('๊ธฐ๋ณธ {0}' -f $base64AuthInfo)
'์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ' = '*'
}
$apiUrl = " https://YourAzureWebsite.scm.azurewebsites.net/api/vfs/site/wwwroot/app_offline.htm "
$filePath = "app_offline_tmp.htm"
Invoke-RestMethod -Uri $apiUrl -Headers $Headers -Method PUT -InFile $filePath -ContentType "multipart/form-data"

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด Kudu REST API https://github.com/projectkudu/kudu/wiki/REST-API ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋Œ€์†Œ๋ฌธ์ž๊ฐ€ ์ง€์ •๋œ app_offline.htm ํŒŒ์ผ์„ HTTP PUTํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐํฌ์— ์—†๋Š” ํŒŒ์ผ์„ ์ œ๊ฑฐํ•˜๋„๋ก WebDeploy๋ฅผ ๊ตฌ์„ฑํ–ˆ์œผ๋ฏ€๋กœ ๋ฐฐํฌ์˜ ์ผ๋ถ€๋กœ ํŒŒ์ผ์„ ์ž๋™์œผ๋กœ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ๋ฐฐํฌ๊ฐ€ ์™„๋ฃŒ๋œ ํ›„ ํŒŒ์ผ์„ ์ œ๊ฑฐํ•˜๋ ค๋ฉด HTTP DELETE๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹จ๊ณ„๋ฅผ ๋ฐ˜๋ณตํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

-
๋‹น์‹ ์ด ๋Œ“๊ธ€์„ ๋‹ฌ์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub https://github.com/aspnet/Home/issues/694#issuecomment-268436959 ์—์„œ ํ™•์ธํ•˜๊ฑฐ๋‚˜ https://github.com/notifications/unsubscribe-auth/AID9WoUdbuBnFoXR2K5o8AiUtks5nE9dRc ์Šค๋ ˆ๋“œ๋ฅผ ์Œ์†Œ๊ฑฐํ•˜์„ธ์š”.


์ด ๋ฉ”์‹œ์ง€๋Š” ๋น„๊ณต๊ฐœ์ด๋ฉฐ ํŠน๊ถŒ, ๋…์  ๋˜๋Š” ๊ธฐ๋ฐ€ ์ •๋ณด๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž˜๋ชป ์ˆ˜์‹ ํ•œ ๊ฒฝ์šฐ์—๋Š” ์ฆ‰์‹œ ๋ฐœ์‹ ์ธ์—๊ฒŒ ์•Œ๋ฆฌ๊ณ  ์›๋ณธ์„ ๋ชจ๋‘ ์‚ญ์ œํ•˜์‹ญ์‹œ์˜ค. ๊ท€ํ•˜๊ฐ€ ์ด๋ฉ”์ผ์„ ๋‹ค๋ฅธ ์šฉ๋„๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๊ธˆ์ง€๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฉ”์‹œ์ง€ ๋‚ด์šฉ์˜ ๋ฌด๋‹จ ๋ณต์‚ฌ, ์ €์žฅ, ์‚ฌ์šฉ ๋˜๋Š” ๊ณต๊ฐœ๋Š” ํ—ˆ์šฉ๋˜์ง€ ์•Š์œผ๋ฉฐ ๋ถˆ๋ฒ•์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์ง€ ๋ฒ•๋ฅ ์—์„œ ํ—ˆ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ •๋ณด ๋ณด์•ˆ ๋ฐ Lithero ์ •์ฑ… ๋ฐ ํ•ด๋‹น ๋ฒ•๋ฅ ์˜ ๋‚ด๋ถ€ ์ค€์ˆ˜ ํ‰๊ฐ€๋ฅผ ์œ„ํ•ด ๋‹น์‚ฌ ์‹œ์Šคํ…œ์—์„œ Lithero์™€์˜ ์ „์ž ํ†ต์‹ ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ์Šค์บ”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

/ ์ฐธ์กฐ @davidebbo

์•ฑ์˜ Azure ์•ฑ ์„ค์ •์—์„œ MSDEPLOY_RENAME_LOCKED_FILES=1 ๋ฅผ ์„ค์ •ํ•ด ๋ณด์„ธ์š”.

@davidebbo ์ด๊ฒƒ์€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ์šธํƒ€๋ฆฌ์˜ Azure ์ธก ๋ณ€๊ฒฝ๊ณผ ๊ด€๋ จ์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋งŽ์€ ์‚ฌ๋žŒ๋“ค(ํŠนํžˆ aspnet slack ์ฑ„๋„์—์„œ)์ด ์ด ๋ฌธ์ œ๋ฅผ ๋™์‹œ์— ๊ฒช์—ˆ์Šต๋‹ˆ๋‹ค.

Azure์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ TFS์™€ ํ•จ๊ป˜ ์˜จ-ํ”„๋ ˆ๋ฏธ์Šค๊ฐ€ ํ‘œ์‹œ๋˜๋Š” ์ด์œ ๋ฅผ ์„ค๋ช…ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์—์ด์ „ํŠธ๊ฐ€ ์•„๋‹๊นŒ์š”?

์šฐ๋ฆฌ๋Š” ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. App_Offline.htm์€ ์„ ํƒ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด์ƒํ•˜๊ฒŒ๋„ VS์—์„œ ๋ฐฐํฌํ•˜๋ฉด ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์ด์ƒํ•˜๊ฒŒ๋„ ์—ฌ๊ธฐ์—์„œ ์„ค๋ช…ํ•œ ๋Œ€๋กœ VS์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. #1883

์šฐ๋ฆฌ ํŒ€์—์„œ๋„ ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”๋ฐ, ์ž ๊ธด ํŒŒ์ผ๋กœ ์ธํ•ด ๋ฐฐํฌ๊ฐ€ ๊ฑฐ์˜ ์‹คํŒจํ•  ๋•Œ๋งˆ๋‹ค ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. Azure์—์„œ ๋ชจ๋“  ์•ฑ์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ณ  ๋ฐฐํฌ๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Octopus Deploy๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ ํŒ€์€ ์˜ค๋Š˜ ์•„์นจ์— ์ด ๋ฌธ์ œ์— ์ง๋ฉดํ–ˆ์Šต๋‹ˆ๋‹ค. Microsoft ํŒ€์˜ ์˜๊ฒฌ์ด ์žˆ์œผ์‹ญ๋‹ˆ๊นŒ? ๋ฆด๋ฆฌ์Šค ํŒŒ์ดํ”„๋ผ์ธ์€ ์ƒ์‚ฐ์„ฑ์— ๋งค์šฐ ์ค‘์š”ํ•˜๋ฉฐ ์ด๋Š” ํ”„๋กœ๋•์…˜ ์‚ฌ์ดํŠธ๋กœ์˜ ๋ฆด๋ฆฌ์Šค๋ฅผ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ์‚ฌ ํ•ด์š”!

@bmoscao - app_offline.html์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” Azure์—์„œ๋„ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋งˆ์ง€๋ง‰๊นŒ์ง€ ๊ทธ๊ฒƒ์„ ์•ผ๊ธฐํ•œ ๊ฒƒ์€ ์•„๋ฌด ๊ฒƒ๋„ ์—†๋‹ค.

์ €๋„ ์ด ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” EnableMSDeployAppOffline ๊ฐ€ true ๋กœ ์„ค์ •๋˜๊ณ  ํ”„๋กœ์ ํŠธ ์ถœ๋ ฅ์— Visual Studio์—์„œ ์‹คํ–‰๋˜๋Š” ๋ช…๋ น์˜ ์ผ๋ถ€๋กœ -enablerule:AppOffline ๊ฐ€ ํ‘œ์‹œ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค... ์ตœ๊ทผ์—์•ผ ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด์— ๋Œ€ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ์•ฑ ํ’€์„ ์ค‘์ง€ํ•˜๊ณ  ๋ฐฐํฌํ•œ ๋‹ค์Œ ์•ฑ ํ’€์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด Release Manager์™€ ์ธ๋ผ์ธ powershell ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ค‘์ง€:

param( [string]$webApp, [string]$subscriptionName, [string]$resourcegroupName );  
Select-AzureRmSubscription -SubscriptionName $subscriptionName; 
Stop-AzureRmWebapp -Name $webApp -ResourceGroupName $resourcegroupName

์‹œ์ž‘:

param( [string]$webApp, [string]$subscriptionName, [string]$resourcegroupName );  
Select-AzureRmSubscription -SubscriptionName $subscriptionName; 
Start-AzureRmWebapp -Name $webApp -ResourceGroupName $resourcegroupName

RM Azure ๋ฐฐํฌ ๋‹จ๊ณ„์—์„œ appOffline ๊ทœ์น™์„ ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋„ ํ›Œ๋ฅญํ•˜๊ฒŒ ์ž‘๋™ํ•˜๋Š” Microsoft์˜ ์˜๊ฒฌ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

@davidebbo ์šฐ๋ฆฌ๋Š” ์Šฌ๋กฏ์ด ์žˆ๋Š” ASP.NET Core, VSTS ๋ฆด๋ฆฌ์Šค ๊ด€๋ฆฌ์ž ๋ฐ AzureRmWebApp์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

@davidebbo ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๊ทธ๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค ;)

์šฐ๋ฆฌ์—๊ฒŒ๋„ ๋ฐœ์ƒ - Azure์— msdeploy. ๋™์‹œ์— ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ์‹ ๋น„๋กญ๊ฒŒ ์‹œ์ž‘๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ „๋ฐ˜์ ์œผ๋กœ ์•ˆ์‹ฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค!

๋‚˜๋Š” MS์˜ ์‚ฌ๋žŒ๋“ค์ด ์ด์— ๋Œ€ํ•œ ํ™•์ธ์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๊ทธ๋“ค์€ ๋ฌธ์ œ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์ž˜ ์•Œ๊ณ  ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ์—ฌ๊ธฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. VSTS์—์„œ ๋ฐฐํฌํ•˜๊ณ  12์›” ์ดˆ์— ์ž‘๋™์„ ์ค‘์ง€ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ trackyon ์ž‘์—…์„ ์‚ฌ์šฉํ•˜์—ฌ ์ค‘์ง€/์‹œ์ž‘ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์Šค๋ ˆ๋“œ๋ฅผ ์‚ดํŽด๋ณด๋ฉด ๊ฐ ํ•ญ๋ชฉ์— ๋Œ€ํ•ด ํ•ญ์ƒ ๋ช…ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  1. ๋ฌธ์ œ๊ฐ€ Azure App Service ๋˜๋Š” ์ผ๋ถ€ ๋‹ค๋ฅธ ํ˜ธ์ŠคํŒ…์„ ์ฐธ์กฐํ•˜๋Š”์ง€ ์—ฌ๋ถ€
  2. ์‚ฌ๋žŒ๋“ค์ด ์œ„์—์„œ ๋…ผ์˜ํ•œ ๋Œ€๋กœ app_offline ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๋ณ€๊ฒฝํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ๋Š”์ง€ ์—ฌ๋ถ€. ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ๋“ค์ด ๊ทธ๊ณณ์—์„œ ์„ฑ๊ณตํ–ˆ๋‹ค๊ณ  ๋ณด๊ณ ํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
  3. MSDEPLOY_RENAME_LOCKED_FILES ์‹œ๋„ ์—ฌ๋ถ€. ๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, ๋ช‡๋ช‡ ์‚ฌ๋žŒ๋“ค์€ ๊ทธ๊ฒƒ์œผ๋กœ ์„ฑ๊ณตํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ๋ฌด์—‡์ธ์ง€, ๋ฌด์—‡์„ ์‹œ๋„ํ–ˆ๋Š”์ง€ ๋งค์šฐ ๋ช…ํ™•ํ•˜๊ฒŒ ์•Œ๋ ค์ฃผ์‹œ๋ฉด ์ €ํฌ๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌ ํ•ด์š”!

@davidebbo

Visual Studio/MSBuild๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐํฌํ•˜๋ ค๊ณ  ํ•˜๋ฉด ERROR_FILE_IN_USE ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ž‘์—…์€ ์„œ๋ฒ„์— App_Offline.htm ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜์ง€๋งŒ ์•ฑ์„ ์ค‘๋‹จํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

Web Deploy๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ app_offline.htm ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๋ฉด ์•ฑ์ด ๋‹ค์šด๋ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋‚ด ์„ค์ •์ž…๋‹ˆ๋‹ค.

  • ์„œ๋ฒ„: IIS 8, .NET Core Windows Server Hosting 1.1.0 ๋ฐ Web Deploy 3.6
  • ๋‚ด ์ปดํ“จํ„ฐ: Visual Studio 2015 ์—…๋ฐ์ดํŠธ 3 ๋ฐ .NET Core 1.0.1 ๋„๊ตฌ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ 2
  • ํ”„๋กœํ•„ ๊ฒŒ์‹œ:
<?xml version="1.0" encoding="utf-8"?>

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <_SavePWD>False</_SavePWD>
    <ADUsesOwinOrOpenIdConnect>False</ADUsesOwinOrOpenIdConnect>
    <AllowUntrustedCertificate>True</AllowUntrustedCertificate>
    <DeployIisAppPath>...</DeployIisAppPath>
    <EnableMSDeployAppOffline>True</EnableMSDeployAppOffline>
    <EnableMSDeployBackup>True</EnableMSDeployBackup>
    <EnvironmentName>Production</EnvironmentName>
    <ExcludeApp_Data>False</ExcludeApp_Data>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
    <MSDeployPublishMethod>WMSVC</MSDeployPublishMethod>
    <MSDeployServiceURL>...</MSDeployServiceURL>
    <PublishFramework>netcoreapp1.1</PublishFramework>
    <PublishRuntime>win81-x64</PublishRuntime>
    <RemoteSitePhysicalPath />
    <SiteUrlToLaunchAfterPublish />
    <SkipExtraFilesOnServer>False</SkipExtraFilesOnServer>
    <UsePowerShell>True</UsePowerShell>
    <UserName>...</UserName>
    <WebPublishMethod>MSDeploy</WebPublishMethod>
  </PropertyGroup>
</Project>

@davidebbo

๋น„์Šทํ•œ ์Šค๋ ˆ๋“œ์—์„œ ์ด ์˜ค๋ฅ˜์— ๋Œ€ํ•ด ์–ธ๊ธ‰ํ–ˆ์œผ๋ฉฐ ์žฌ๋ฐฐํฌํ•  ๋•Œ๋งˆ๋‹ค Azure ์›น ์•ฑ์„ ์ค‘์ง€ํ–ˆ๋‹ค๊ฐ€ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค(๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ๋งŒ). ์ด๋ฒˆ ์ฃผ ์ด์ „์—๋Š” ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ํ•„์š”๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ํ…œํ”Œ๋ฆฟ์—์„œ ์ˆ˜์ • ์—†์ด Visual Studio 2015 .net ํ•ต์‹ฌ ์›น ์•ฑ์„ ๋งŒ๋“ค๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋กœ์ปฌ ํ˜ธ์ŠคํŠธ์—์„œ ์›น ์•ฑ์„ ์‹คํ–‰ํ–ˆ๋Š”๋ฐ ์ „ํ˜€ ๋ฌธ์ œ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.
๋‚ด Azure Web App Service ๊ณ„ํš์— ์ƒˆ ์•ฑ์„ ๊ฒŒ์‹œํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ์—†์œผ๋ฉฐ ๋ธŒ๋ผ์šฐ์ €๋Š” ์ฆ‰์‹œ ์‚ฌ์ดํŠธ๋ฅผ ๋ฌธ์ œ ์—†์ด ๋ถˆ๋Ÿฌ์˜ต๋‹ˆ๋‹ค.
Azure Dashboard๋ฅผ ํ™•์ธํ–ˆ๋Š”๋ฐ ์ „ํ˜€ ๋ฌธ์ œ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ ์ฝ”๋“œ ๋˜๋Š” ์„ค์ •์„ ์ˆ˜์ •ํ•˜์ง€ ์•Š๊ณ  ์›น ์•ฑ์„ ๋‹ค์‹œ ๊ฒŒ์‹œํ–ˆ์œผ๋ฉฐ ๋‹ค์Œ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

๊ทธ๋•Œ๋ถ€ํ„ฐ ์›น ์•ฑ์„ ์ค‘์ง€ํ•˜๊ณ  Azure์— ๊ฒŒ์‹œํ•œ ๋‹ค์Œ ์›น ์•ฑ์„ ์‹œ์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ „์— ๋‚˜์—๊ฒŒ ์ผ์–ด๋‚œ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ Microsoft ํ…œํ”Œ๋ฆฟ์˜ ๋งค์šฐ ๊ฐ„๋‹จํ•œ ๋ฐฐํฌ์ž…๋‹ˆ๋‹ค.

์ด ์ „์ฒด ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ธฐ๋กํ•˜๊ณ  Microsoft 2015 VS ํ”ผ๋“œ๋ฐฑ ์‹œ์Šคํ…œ ๋‚ด์—์„œ ํ•ด๋‹น ํ”ผ๋“œ๋ฐฑ์„ ๋ณด๋ƒˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๋…น์Œ์„ ์ฐพ์„ ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์•„๋‹ˆ๋ฉด ๋‹ค์‹œ ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์•ˆ๋ถ€ ํ”ผํ„ฐ

@davidebbo

๋ฌธ์ œ๊ฐ€ Azure App Service ๋˜๋Š” ์ผ๋ถ€ ๋‹ค๋ฅธ ํ˜ธ์ŠคํŒ…์„ ์ฐธ์กฐํ•˜๋Š”์ง€ ์—ฌ๋ถ€

์• ์ € ์•ฑ ์„œ๋น„์Šค.

์‚ฌ๋žŒ๋“ค์ด ์œ„์—์„œ ๋…ผ์˜ํ•œ ๋Œ€๋กœ app_offline ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๋ณ€๊ฒฝํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ๋Š”์ง€ ์—ฌ๋ถ€. ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ๋“ค์ด ๊ทธ๊ณณ์—์„œ ์„ฑ๊ณตํ–ˆ๋‹ค๊ณ  ๋ณด๊ณ ํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

App_Offline์„ app_offline์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์€ ๋ฌธ์ œ์˜ ํ•ต์‹ฌ์ธ ๋ฐฐํฌ์˜ ์ผ๋ถ€๋กœ 'App_Offline' ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ webdeploy๋ฅผ ํ†ตํ•ด ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

@davidebbo
@ctolkien๊ณผ ์ •ํ™•ํžˆ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

@davidebbo

๋ฌธ์ œ๊ฐ€ Azure App Service ๋˜๋Š” ์ผ๋ถ€ ๋‹ค๋ฅธ ํ˜ธ์ŠคํŒ…์„ ์ฐธ์กฐํ•˜๋Š”์ง€ ์—ฌ๋ถ€

์ œ ๊ฒฝ์šฐ์—๋Š” Azure App Service์— ๋ฐฐํฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํ˜ธ์ŠคํŒ…์— ๋Œ€ํ•ด ์ž˜ ๋ชจ๋ฆ…๋‹ˆ๋‹ค.

์‚ฌ๋žŒ๋“ค์ด ์œ„์—์„œ ๋…ผ์˜ํ•œ ๋Œ€๋กœ app_offline ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๋ณ€๊ฒฝํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ๋Š”์ง€ ์—ฌ๋ถ€. ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ๋“ค์ด ๊ทธ๊ณณ์—์„œ ์„ฑ๊ณตํ–ˆ๋‹ค๊ณ  ๋ณด๊ณ ํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

VSTS(https://aka.ms/azurermwebdeployreadme)์—์„œ "AzureRM Web App ๋ฐฐํฌ" ์ž‘์—…์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. "์›น ๋ฐฐํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒŒ์‹œ" <- ์„ ํƒํ•˜๊ณ  "์•ฑ ์˜คํ”„๋ผ์ธ์œผ๋กœ ์ „ํ™˜" <- ์–ด๋–ค ๊ฒƒ์ด ์ž‘๋™ํ•˜๋˜์ง€ ํ™•์ธํ•˜๊ณ  ์–ด๋”˜๊ฐ€์—์„œ ๋ณ€๊ฒฝ๋˜์–ด ์ž‘๋™์ด ์ค‘์ง€๋  ๋•Œ๊นŒ์ง€ ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.
"info" ํˆดํŒ์€ "app_offline.htm"์„ ์†Œ๋ฌธ์ž "a"๋กœ ๋ฐฐ์น˜ํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ๋ช…์‹œ์ ์œผ๋กœ ์•Œ๋ ค์ค๋‹ˆ๋‹ค.
์ด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ ์†Œ๋ฌธ์ž์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

MSDEPLOY_RENAME_LOCKED_FILES๊ฐ€ ์‹œ๋„๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€. ๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ, ๋ช‡๋ช‡ ์‚ฌ๋žŒ๋“ค์€ ๊ทธ๊ฒƒ์œผ๋กœ ์„ฑ๊ณตํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์‹œ๋„ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฆ…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์–ด์จŒ๋“  ์ž ๊ธด ํŒŒ์ผ ๋‚ด์šฉ์„ ๋ณ€๊ฒฝํ•˜๋Š” ๋Œ€์‹  ์•ฑ์„ ์˜คํ”„๋ผ์ธ์œผ๋กœ ์ „ํ™˜ํ•˜๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ฃผ์š” ๋ฌธ์ œ๋Š” app_offline.htm ์˜ ๋Œ€์†Œ๋ฌธ์ž์™€ ๊ด€๋ จ์ด ์žˆ์œผ๋ฉฐ Azure App Service(๋‚ด๊ฐ€ ์†ํ•œ ์ชฝ)์™€ ๊ด€๋ จ๋œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์ด ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์€ https://github.com/aspnet/AspNetCoreModule/issues/50์—์„œ ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ๋‹ซ๊ณ  ๋‹ค๋ฅธ ๋ฌธ์ œ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. Azure Web App์— ๋ถ€๋ถ„์ ์œผ๋กœ ์ฑ…์ž„์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•  ์ด์œ ๊ฐ€ ์—†๋Š” ํ•œ(Azure ์™ธ๋ถ€์—์„œ ๋™์ผํ•œ ๋ณด๊ณ ๋ฅผ @fabiano ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์—†์Œ) ASP.NET ์ „๋ฌธ๊ฐ€๊ฐ€ ๊ฑฐ๊ธฐ์—์„œ ๊ฐ€์ ธ๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ์ด๊ฒƒ์€ app_offline.html ๋Œ€์‹  App_Offline.html์„ ๋งŒ๋“ค๊ธฐ ์‹œ์ž‘ํ•œ ๊ฒƒ์œผ๋กœ ๋ณด์ด๋Š” ๋„๊ตฌ์˜ ํšŒ๊ท€์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. @mlorbetske , @vijayrkn - ๊ทธ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ฝ”์–ด ๋Ÿฐํƒ€์ž„(AspNetCoreModule)์ด ํ•ญ์ƒ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€๋งŒ VS๊ฐ€ ์ผ์น˜ํ•˜๋Š” ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ๊ณ  ์ง€๊ธˆ์€ ๊ทธ๋ ‡์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์•˜๋‹ค๋Š” ๋ง์”€์ด์‹ ๊ฐ€์š”?

๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋Ÿฐํƒ€์ž„์€ ์—ฌ๊ธฐ์—์„œ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š์•„์•ผ ํ•˜๋ฏ€๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋‘ ๊ฐ€์ง€ ๊ฐ€๋Šฅํ•œ ๊ฒฝ๋กœ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

@davidebbo - ๋งž์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” AspNetCoreModule์ด ํ•ญ์ƒ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•œ๋‹ค๊ณ  ๋ฏฟ์Šต๋‹ˆ๋‹ค.

@davidebbo

Azure App Service์™€ ๊ด€๋ จ๋œ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค(๋‚ด๊ฐ€ ์†ํ•œ ์ชฝ).

๋…ผ์˜์— Azure AppService๋ฅผ ๋„์ž…ํ•œ ์ด์œ ๋Š” ์šฐ๋ฆฌ๋ฅผ ๋Œ€์‹ ํ•˜์—ฌ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ์ผ์ด ์‹คํŒจํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๊ณ  ํŒจํ‚ค์ง€ ๋ฒ„์ „์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ANCM ๊ฐœ์ •ํŒ์ด App Services์—์„œ ๊ฐœ์ •๋˜์—ˆ์Šต๋‹ˆ๊นŒ?

@ctolkien ๋„ค, ์ •๋ง ์—…๋ฐ์ดํŠธ ๋œ ๊ฒƒ ๊ฐ™์•„์š”. ๋”ฐ๋ผ์„œ ์œ„์˜ ๊ฒฐ๋ก ์ด ์˜ณ์ง€ ์•Š์„ ๊ฐ€๋Šฅ์„ฑ์ด ๋งค์šฐ ๋†’์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ์ƒˆ๋กœ์šด ์ด๋ก ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์ด์ „ ANCM(7.1.1965.0)์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค .
  • ์ตœ์‹  ๋ฒ„์ „(7.1.1970.0)์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.
  • VS ๊ฒŒ์‹œ ์ธก๋ฉด์—์„œ ๋ณ€๊ฒฝ๋œ ์‚ฌํ•ญ์€ ์—†์œผ๋ฉฐ ๋Œ€์†Œ๋ฌธ์ž๋Š” ํ•ญ์ƒ App_Offline.htm ์ž…๋‹ˆ๋‹ค.

@moozzyk ๊ทธ๊ฒƒ์ด ๊ฐ€๋Šฅ์„ฑ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ํ•ญ์ƒ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•œ๋‹ค๊ณ  ํ™•์‹ ํ•˜์‹ญ๋‹ˆ๊นŒ?

@moozzyk @davidebbo - app_offline ์ผ€์ด์‹ฑ์— ๋Œ€ํ•œ VS ๋„๊ตฌ์—๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์—†์Šต๋‹ˆ๋‹ค. VS ๋„๊ตฌ๋Š” appoffline ๊ทœ์น™(-enablerule:AppOffline)์„ ์‚ฌ์šฉํ•˜์—ฌ msdeploy๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  msdeploy๋Š” App_Offline.htm์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” ANCM์˜ ๋™์ž‘ ๋ณ€๊ฒฝ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์ฃผ์„์— ๋”ฐ๋ฅด๋ฉด app_offline์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค(https://github.com/aspnet/IISIntegration/issues/81).

@ctolkien

App_Offline์„ app_offline์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

์ด๊ฑฐ ์–ด๋””์„œ ๋ฐ”๊พธ๋‚˜์š”? Visual Studio์—์„œ Azure๋กœ ์ง์ ‘ MSDEPLOY๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

@oyvindvol

์ด๊ฑฐ ์–ด๋””์„œ ๋ฐ”๊พธ๋‚˜์š”? Visual Studio์—์„œ Azure๋กœ ์ง์ ‘ MSDEPLOY๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์•„๋Š” ํ•œ MSDEPLOY์—์„œ App_Offline ์˜ ๋Œ€/์†Œ๋ฌธ์ž๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉ์ž ์ง€์ • ์Šคํฌ๋ฆฝํŒ…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์œ„์— ๊ฒŒ์‹œํ•œ powershell ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹œ์ž‘์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋‘๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ ์œ„ํ•ด ์šฐ๋ฆฌ๋Š” ์œ„์˜ ์ด๋ก ์ด ์˜ณ๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„ ๋ฒ„๊ทธ๋Š” ANCM์˜ ์ตœ์‹  ๋ฒ„์ „์—์„œ ํšŒ๊ท€์ด๊ณ  ํ•ด๋‹น ๋ฒ„์ „์€ 12์›”์— Azure App Service์— ๋ฐฐํฌ๋˜์–ด ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ‘์ž๊ธฐ ์ด ๋ฌธ์ œ์— ๋ถ€๋”ช์ณค์Šต๋‹ˆ๋‹ค.

๊ณ„ํš์€ ASP.NET Core ํŒ€์—์„œ ANCM ์ˆ˜์ • ์‚ฌํ•ญ์„ ๊ฐ€์ ธ์™€ App Service์— ๋ฐฐํฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ETA๋Š” ์•„์ง ์—†์ง€๋งŒ 1์›”์— ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ํ•ด์š”!

@davidebbo ANCM ์„ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ iis๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž์ฒด ์„œ๋ฒ„์— ์„ค์น˜ํ•˜๊ณ  ์ด ํŠน์ • ๋ฒ„๊ทธ๋„ ์žก์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@Pictuel ๊ทธ๋ ‡๊ฒŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ๋‚ด ๊ฐ๋„๋Š” ์—„๋ฐ€ํžˆ ๋งํ•˜๋ฉด Azure App Service์ด๋ฏ€๋กœ Core ํŒ€์ด Azure๊ฐ€ ์•„๋‹Œ ์‹œ๋‚˜๋ฆฌ์˜ค์— ๋Œ€ํ•ด ๋…ผํ‰ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค :)

@Pictuel ์˜ˆ, ANCM์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ํฌํ•จ๋œ .NET Core์šฉ Windows ํ˜ธ์ŠคํŒ… ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์˜ ์—…๋ฐ์ดํŠธ๋œ ๋ฒ„์ „์ด ์ถœ์‹œ๋˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

@shirhatti

@shirhatti ์—…๋ฐ์ดํŠธ๋œ ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์„œ ๋งํฌ๋ฅผ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์„ ๋•Œ ์—ฌ๊ธฐ์—์„œ ๋ชจ๋‹ˆํ„ฐ๋ง ์ค‘์ž…๋‹ˆ๋‹ค.

ํ•ด๋‹น ์Šค๋ ˆ๋“œ๋ฅผ ์‚ดํŽด๋ณธ ํ›„ App Services์— ๋Œ€ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์ •ํ™•ํžˆ ๋ฌด์—‡์ธ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์•ฑ ์„ค์ •์ž…๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ์‚ฌ์šฉ์ž ์ •์˜ ๋ฐฐํฌ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ์‚ฌ์ดํŠธ๋ฅผ ์ค‘์ง€ํ•˜๊ณ  ์‹œ์ž‘ํ•ฉ๋‹ˆ๊นŒ?

์•ฑ ์„ค์ •์ธ ๊ฒฝ์šฐ ์›น ์‚ฌ์ดํŠธ๊ฐ€ ์ƒˆ DLL์„ ์„ ํƒํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•œ๋‹ค๋Š” ๋‹ค๋ฅธ ์˜๊ฒฌ์„ ์ฝ์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ดํ•ดํ–ˆ๋‹ค๋ฉด ANCM(https://github.com/aspnet/AspNetCoreModule/issues/50)์—์„œ ์—…๋ฐ์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„ ๋•Œ๊นŒ์ง€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค. ์•ฑ ์„œ๋น„์Šค๋Š” Azure ํŒ€์—์„œ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

App Service์—์„œ @dtmnash here ์—์„œ ์„ค๋ช…ํ•œ ๋Œ€๋กœ ์•ฑ์„ ์ค‘์ง€/์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@davidebbo "๊ณ„ํš์€ ASP.NET Core ํŒ€์—์„œ ANCM ์ˆ˜์ • ์‚ฌํ•ญ์„ ๊ฐ€์ ธ์™€ App Service์— ๋ฐฐํฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•„์ง ETA๋Š” ์—†์ง€๋งŒ 1์›” ์ค‘ ์–ธ์  ๊ฐ€๋Š” ์ด๋ฃจ์–ด์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค." -- ETA๊ฐ€ ์ค€๋น„๋˜๋ฉด ์•Œ๋ ค์ฃผ์„ธ์š” :)

์ž ์ • ๋ฐฐ์น˜ ETA๋Š” 24์ผ์—์„œ 30์ผ ์‚ฌ์ด์ž…๋‹ˆ๋‹ค. ๋ฐฐํฌ๋Š” ์—ฌ๋Ÿฌ ํ™•์žฅ ๋‹จ์œ„์— ๊ฑธ์ณ ์ ์ง„์ ์œผ๋กœ ์ด๋ฃจ์–ด์ง€๋ฏ€๋กœ ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์ •ํ™•ํžˆ ๋™์‹œ์— ์ˆ˜์ • ์‚ฌํ•ญ์„ ์–ป์ง€๋Š” ๋ชปํ•ฉ๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ ๋ง‰ ์ž‘๋™ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค :-)

๋‚˜์—๊ฒŒ ์—ฌ์ „ํžˆ ๋ฌธ์ œ :(

@hbunjes ํ™•์ธํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

@rsnj ์ผ์ • ๊ธฐ๊ฐ„ ๋™์•ˆ ์ ์ง„์ ์œผ๋กœ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ชจ๋“  ์ž‘์—…์€ ์›”๋ง๊นŒ์ง€ ์™„๋ฃŒ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š” ํ•œ).

@davidebbo ๋ฐฐํฌ๋Š” ์ผ๋ถ€ ๋‚ด ์•ฑ์—์„œ ์ž‘๋™ํ•˜์ง€๋งŒ ์ „๋ถ€๋Š” ์•„๋‹Œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด์ƒํ•œ ์ ์€ ์ผ๋ถ€ ๋ฐฐํฌ๋Š” ์‹คํŒจํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ๋ฐฐํฌ๋Š” ๋™์ผํ•œ App Service ๊ณ„ํš์—์„œ ์‹คํ–‰๋˜๋Š” ์•ฑ์— ๋Œ€ํ•ด ์‹คํŒจํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํŠน์ • ์›น ์•ฑ์— ๋Œ€ํ•ด ์–ด๋–ค ๋ฒ„์ „์˜ ANCM์ด ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@henningst ํ™•์ธ ๋ฐฉ๋ฒ•์€ https://github.com/aspnet/AspNetCoreModule/issues/50#issuecomment -271381892๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์–ด์ œ ์ €๋ฅผ ์œ„ํ•ด ์ผํ•˜์ง€ ์•Š์•˜์ง€๋งŒ ์ง€๊ธˆ์ž…๋‹ˆ๋‹ค. @davidebbo ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

๊ทธ๊ฒƒ์€ ๋‚˜์—๊ฒŒ๋„ ํšจ๊ณผ๊ฐ€ ์žˆ๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌ ํ•ด์š”!

์˜ˆ, ์ด์ œ ๋ฐฐํฌ๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ์œผ๋ฏ€๋กœ ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—์„œ๋„ ๋‚˜์—๊ฒŒ ๋ชจ๋“  ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์ง€๊ธˆ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ณด๊ณ ์„œ์— ๋”ฐ๋ฅด๋ฉด ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ 1๋…„ ์ด์ƒ์ด ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค. ๋ฐฐํฌ ๋ฌธ์ œ๊ฐ€ ๋” ๋†’์€ ์šฐ์„  ์ˆœ์œ„๋ฅผ ์ฐจ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋น„ Azure์— ๋Œ€ํ•ด ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

@pekkah ๋ณ„๊ฐœ์˜ ๋ฌธ์ œ๋ฅผ ๊ฒช์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ตœ๊ทผ ๊ฒƒ์€ 1๋…„๋ณด๋‹ค ํ›จ์”ฌ ๋” ์ตœ๊ทผ์˜ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Azure๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ @jdshkolnik , ์ƒˆ ANCM์„ ์‚ฌ์šฉํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

@jdshkolnik
์—…๋ฐ์ดํŠธ๋Š” https://www.microsoft.com/net/download/core#/runtime ์—์„œ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋‹ค์šด๋กœ๋“œ ๋ฐ”๋กœ ๊ฐ€๊ธฐ ์ž…๋‹ˆ๋‹ค.

@shirhatti ์ด๊ฒƒ์„ ์„ค์น˜ํ–ˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๋ธŒ๋ผ์งˆ ๋‚จ๋ถ€ ์ƒํŒŒ์šธ๋ฃจ์—์„œ ์—ฌ์ „ํžˆ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

@jdshkolnik PowerShell์—์„œ ์ด๊ฒƒ์„ ์‹คํ–‰ํ•˜๋ฉด ์–ด๋–ค ๋ฒ„์ „์ด ๋ณด์ด๋‚˜์š”?

[System.Diagnostics.FileVersionInfo]::GetVersionInfo("C:\Windows\System32\inetsrv\aspnetcore.dll").FileVersion

@shirhatti 7.1.1971.0

์—…๋ฐ์ดํŠธ : ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์ œ ์ž˜๋ชป์ž…๋‹ˆ๋‹ค. ๋ฆด๋ฆฌ์Šค ์ •์˜๊ฐ€ ์•„๋‹Œ ๊ธฐ์กด ๋ฆด๋ฆฌ์Šค์˜ ๋ฐฐํฌ ๋‹จ๊ณ„๋ฅผ ๊ฒ€ํ† ํ•˜๊ณ  ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ์ง“์„ ๋ช‡ ๋ฒˆ์ด๋‚˜ ํ–ˆ๋Š”์ง€ ์„ธ์–ด๋ณด์ง€๋„ ์•Š์•˜์–ด...

๋‚ด ๋ฒ„์ „์˜ aspnetcore.dll์ด ์ˆ˜์ •๋˜์—ˆ๋‹ค๊ณ  ํ•ด๋„ ๋ฐฐํฌ๋ฅผ ์‹œ๋„ํ•  ๋•Œ๋งˆ๋‹ค ์ด ์˜ค๋ฅ˜๊ฐ€ ๊ณ„์† ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

aspnetcore.dll ๋ฒ„์ „ : 7.1.1971.0
๋ฐฐํฌ : VSTS ์ž‘์—… Azure App Service Deploy v3.*(๋ฏธ๋ฆฌ ๋ณด๊ธฐ)
์•ฑ์„ ์˜คํ”„๋ผ์ธ์œผ๋กœ ์ „ํ™˜ : ์„ ํƒ๋จ
๋Œ€์ƒ์—์„œ ์ถ”๊ฐ€ ํŒŒ์ผ ์ œ๊ฑฐ : ์„ ํƒ๋จ
์ž ๊ธด ํŒŒ์ผ ์ด๋ฆ„ ๋ฐ”๊พธ๊ธฐ : ์„ ํƒ
MSDEPLOY_RENAME_LOCKED_FILES ์•ฑ ์„ค์ • : ์ถ”๊ฐ€๋˜์ง€ ์•Š์Œ

์ด ๋‹จ๊ณ„์—์„œ๋Š” ์ด๊ฒƒ์ด ์ž‘๋™ํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋–ค ์„ค์ •์ด ํ•„์š”ํ•˜๊ฑฐ๋‚˜ ํ•„์š”ํ•˜์ง€ ์•Š์€์ง€ ๋ช…ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด์ œ azure ์•ฑ ์„œ๋น„์Šค์—์„œ ์ฒซ ๋ฒˆ์งธ ํŒŒ์ผ ์‚ฌ์šฉ ๋ฌธ์ œ๊ฐ€ ๋‹ค์‹œ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

2017-02-14T22:41:10.4400186ZC:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy.exe - ์†Œ์Šค:IisApp= 'D:/a/r1/a/Ascend Ammo Portal/drop/apps /artifacts/AmmoPortal' - ๋Œ€์ƒ:IisApp= 'core-asyoz77ajoed4/ammo-preview',ComputerName=' https://core-asyoz77ajoed4.scm.azurewebsites.net/msdeploy.axd?site=core-asyoz77ajoedview4/ammo - ',UserName='$core-asyoz77ajoed4',Password=' * * ',IncludeAcls='False',AuthType='๊ธฐ๋ณธ' - verb:sync -retryAttempts=20 -verbose -e nablerule:AppOffline

2017-02-14T22:41:34.3837386Z ์˜ค๋ฅ˜ ์ฝ”๋“œ: ERROR_FILE_IN_USE

2017-02-14T22:41:34.3837386Z ์ถ”๊ฐ€ ์ •๋ณด: Web Deploy๋Š” ์™ธ๋ถ€ ํ”„๋กœ์„ธ์Šค์— ์˜ํ•ด ์ž ๊ฒจ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€์ƒ์—์„œ 'Ascend.Ammo.Portal.exe' ํŒŒ์ผ์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ฒŒ์‹œ ์ž‘์—…์ด ์„ฑ๊ณตํ•˜๋ ค๋ฉด ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜์—ฌ ์ž ๊ธˆ์„ ํ•ด์ œํ•˜๊ฑฐ๋‚˜ ๋‹ค์Œ ๊ฒŒ์‹œ ์‹œ๋„์—์„œ .Net ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ๋Œ€ํ•ด AppOffline ๊ทœ์น™ ์ฒ˜๋ฆฌ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_FILE_IN_USE๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

2017-02-14T22:41:34.3837386Z ์˜ค๋ฅ˜ ๊ฐœ์ˆ˜: 1.

์ฐธ๊ณ : ๋ฌธ์„œ๊ฐ€ ์ด์ „ ๋ฒ„์ „(*.1970)์˜ ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์— ๋งํฌ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. https://docs.microsoft.com/en-us/aspnet/core/publishing/iis#install -the-net-core- Windows-์„œ๋ฒ„-ํ˜ธ์ŠคํŒ…-๋ฒˆ๋“ค.

๋˜ํ•œ ๋Ÿฐํƒ€์ž„ ๋‹ค์šด๋กœ๋“œ ํŽ˜์ด์ง€ ์—์„œ LTS ๋ฒ„์ „์—๋งŒ ์ˆ˜์ • ์‚ฌํ•ญ์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๊นŒ?

@shirhatti ~์ƒˆ ํ˜ธ์ŠคํŒ… ๋ฒˆ๋“ค ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ ๋งํฌ๊ฐ€ ์ค€๋น„๋˜๋ฉด ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค. ๋ฌธ์„œ๋กœ ๋ณด๋‚ด๊ฒ ์Šต๋‹ˆ๋‹ค(๋ช‡ ๊ตฐ๋ฐ์— ์žˆ์Œ).~

~์ด๊ฑฐ: https://go.microsoft.com/fwlink/?linkid=837808 ... ๊ทธ๊ฑด aka.ms ๋งํฌ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.~

fwlink๊ฐ€ ์ •์ƒ์ธ ๊ฒฝ์šฐ ์ด๋ฅผ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•ด https://github.com/aspnet/Docs/pull/2773 ์„ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

image

Visual Studio์—์„œ๋„ ๋ฐœ์ƒํ•˜๋ฉฐ ์˜ต์…˜์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด ์•ฑ ์˜คํ”„๋ผ์ธ ๊ทœ์น™์ด ์žˆ์Šต๋‹ˆ๋‹ค.

@davidebbo ์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์•„์ง๋„ ์น˜๊ณ  ์žˆ๋‹ค๋Š” ์ด์•ผ๊ธฐ๋ฅผ ๋งŽ์ด ๋“ฃ์Šต๋‹ˆ๋‹ค. ๋„๊ตฌ์˜ ๋ฆด๋ฆฌ์Šค ๋ฒ„์ „์— ์ด์— ๋Œ€ํ•œ ์ˆ˜์ • ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ์—ฌ์ „ํžˆ ํ˜ธ์ŠคํŒ… ๋ฌธ์ œ์ž…๋‹ˆ๊นŒ?

๋‚˜๋Š” ๋˜ํ•œ ๊ทธ๊ฒƒ์ด ์™œ ๊ทธ๋ฆฌ๊ณ  ์–ธ์ œ ์ผ์–ด๋‚˜๋Š”์ง€ ์•Œ์•„ ๋‚ด๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค๊ฐ€ scm ์‚ฌ์ดํŠธ์˜ ํ”„๋กœ์„ธ์Šค ํƒ์ƒ‰๊ธฐ์—์„œ ์‹คํ–‰ ์ค‘์ด๊ณ  ์ •์ƒ์ ์œผ๋กœ ๊ฒŒ์‹œ๋˜์—ˆ์Œ์„ ๊ฑฐ์˜ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ๊ฐ€ ์ด์ „ project.json ๋„๊ตฌ์™€ ๊ด€๋ จ์ด ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ผ๋ฉฐ ๋‚ด ์‚ฌ์ดํŠธ๋ฅผ ์ตœ์‹  ๋„๊ตฌ๋กœ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ณผ์ •์— ์žˆ์Šต๋‹ˆ๋‹ค.

์ˆ˜์ • ์‚ฌํ•ญ์€ ์–ผ๋งˆ ์ „์— Azure App Service์— ๋ฐฐํฌ๋˜์—ˆ์œผ๋ฉฐ ์ดํ›„์—๋„ ์—ฌ์ „ํžˆ ๋ฌธ์ œ๊ฐ€ ํ‘œ์‹œ๋˜๋Š” ์‚ฌ๋žŒ์„ ์•Œ์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ๋น„ Azure ํ˜ธ์ŠคํŠธ์˜ ์‚ฌ์šฉ์ž๋Š” ์—…๋ฐ์ดํŠธ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๊ณ„์† ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Azure์˜ ๊ฒฝ์šฐ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ…Œ์ŠคํŠธํ•˜์„ธ์š”.

  • Kudu ํ”„๋กœ์„ธ์Šค ํƒ์ƒ‰๊ธฐ๋กœ ์ด๋™ํ•˜์—ฌ ์•ฑ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰ ์ค‘์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค(์ผ๋ฐ˜์ ์œผ๋กœ dotnet.exe).
  • Kudu ๋ช…๋ น์—์„œ app_offline.htm ํŒŒ์ผ์„ ์ˆ˜๋™์œผ๋กœ ์ƒ์„ฑ(์˜ˆ: touch app_offline.htm ์‹คํ–‰)
  • ํ”„๋กœ์„ธ์Šค ํƒ์ƒ‰๊ธฐ๋ฅผ ๋‹ค์‹œ ํ™•์ธํ•˜๊ณ  ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋” ์ด์ƒ ์กด์žฌํ•˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

์ข€ ๋” ํ…Œ์ŠคํŠธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ช‡ ๊ฐœ์˜ ๊ฒŒ์‹œ๋ฌผ์— ์žˆ๋Š” ์ด๋ฏธ์ง€๋ฅผ ๋ณด์•˜์Šต๋‹ˆ๊นŒ? ํŒŒ์ผ์ด ์‚ฌ์šฉ ์ค‘์ด๊ณ  ์˜คํ”„๋ผ์ธ์—์„œ ์•ฑ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Œ์„ ๋ถ„๋ช…ํžˆ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ๋‹น์‹ ์ด ์š”์ฒญํ•œ๋Œ€๋กœ ํ…Œ์ŠคํŠธ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ ๊ฐ€์ƒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋ฐฐํฌ๋œ ํ™•์žฅ + ์•ฑ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

@pksorensen ์ด '์ˆ˜๋™์œผ๋กœ' ์ˆ˜ํ–‰ํ•˜๋ฉด WebDeploy๊ฐ€ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ์ž‘์—…์—์„œ ๊ฒฉ๋ฆฌํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋‹จ์ˆœํžˆ app_offline.htm ๋ฅผ ์‚ญ์ œํ•ด๋„ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ค‘์ง€๋˜์ง€ ์•Š์œผ๋ฉด WebDeploy์— ์˜ํ•ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์€ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์ •๋ง๋กœ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ dotnet.exe ํ”„๋กœ์„ธ์Šค๋กœ ๋๋‚˜๋Š” ๋ฐ˜๋ฉด ๊ท€ํ•˜์˜ ๊ฒฝ์šฐ์—๋Š” ๋‹ค๋ฅธ exe ์ด๋ฆ„์„ ๊ฐ–๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ๋“  ๋ฌธ์ œ์™€ ๊ด€๋ จ์ด ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

  1. Kudu ํ”„๋กœ์„ธ์Šค ํƒ์ƒ‰๊ธฐ๋กœ ์ด๋™ํ•˜์—ฌ ์•ฑ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰ ์ค‘์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค(์ผ๋ฐ˜์ ์œผ๋กœ dotnet.exe).
    ๋‚˜๋Š” ์ด๊ฒƒ์„ํ–ˆ์ง€๋งŒ dotnet.exe๊ฐ€ ์•„๋‹ˆ๋ผ ์šฐ๋ฆฌ ์ด๋ฆ„์ด ์ปดํŒŒ์ผ ๋œ bin Ascend.Ammo.RegistrationTablet.exe

๊ทธ๋Ÿฐ ๋‹ค์Œ app_offline.htm์„ ํ„ฐ์น˜ํ–ˆ์ง€๋งŒ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜์ง€๋Š” ์•Š์•˜์Šต๋‹ˆ๋‹ค.

dotnet.exe๊ฐ€ ๋ณด์ด์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด๊ฐ€ ๋ญ”๊ฐ€ ์ž˜๋ชปํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

dotnet/ANCM ์ „๋ฌธ๊ฐ€๋“ค์ด ๊ทธ ๋ถ€๋ถ„์— ๋Œ€ํ•ด ๋…ผํ‰ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ํ•ต์‹ฌ ASP.NET ์•ฑ์„ ๋ฐฐํฌํ•  ๋•Œ dotnet.exe๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ๋Š” ๋…๋ฆฝ ์‹คํ–‰ํ˜• ๋ฐฐํฌ(๋˜๋Š” ๋ฌด์—‡์ด๋“  ํ˜ธ์ถœ)๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์ด ANCM ๋ฐ app_offline.htm์— ์–ด๋–ค ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

@DamianEdwards ๋ˆ„๊ฐ€ ์ด์— ๋Œ€ํ•ด ๊ฐ€์žฅ ์ž˜ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” ๋ฐฐํฌ ์Šฌ๋กฏ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ทธ ๋ฌธ์ œ๋ฅผ ํ”ผํ•ฉ๋‹ˆ๋‹ค. 100% ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ์„ ๋ณต์‚ฌํ•˜๊ธฐ ์ „์— ์Šฌ๋กฏ์„ ์ค‘์ง€ํ•˜์‹ญ์‹œ์˜ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋ชจ๋“  ๊ฒƒ์ด ์ œ๊ฑฐ๋˜๋ฏ€๋กœ ๋ณต์‚ฌ๋ณธ์ด ์ž ๊ธด ํŒŒ์ผ์ด ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์Šฌ๋กฏ์„ ์‹œ์ž‘ํ•˜๊ณ  ํ”„๋กœ๋•์…˜์œผ๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ณ ๊ฐ์ด ์•ฑ ์˜คํ”„๋ผ์ธ ํŽ˜์ด์ง€๋ฅผ ๋ณผ ์ˆ˜ ์—†๋‹ค๋Š” ์ด์ ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€๋™ ์ค‘์ง€ ์‹œ๊ฐ„์ด 0์ž…๋‹ˆ๋‹ค.

http://donovanbrown.com/post/MicrosoftCodeAnalysisCSharpdll-Locked-Problem-Fix

@DarqueWarrior ์Šฌ๋กฏ์€ ๋ฌผ๋ก  ์ž‘๋™ํ•˜์ง€๋งŒ(๋‹ค๋ฅธ ์ด์œ ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ์— ์ข‹์Šต๋‹ˆ๋‹ค), ์ด ์Šค๋ ˆ๋“œ์˜ ํ•ต์‹ฌ์€ ์™œ app_offline์ด @pksorensen๊ณผ ๊ฐ™์€ ์ผ๋ถ€ ์‚ฌ๋žŒ๋“ค์˜ Core ํ”„๋กœ์„ธ์Šค๋ฅผ ์ข…๋ฃŒํ•˜๋Š” ๋ฐ ๋น„ํšจ์œจ์ ์œผ๋กœ ๋‚˜ํƒ€๋‚˜๋Š”์ง€ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Core ํŒ€์—์„œ ์ด์— ๋Œ€ํ•ด ์–ธ๊ธ‰ํ•ด ์ฃผ์…จ์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค.

@davidebbo ์ด์ „ ์งˆ๋ฌธ์— ๋‹ตํ•˜๊ธฐ ์œ„ํ•ด ํœด๋Œ€์šฉ ๋Œ€ ๋…๋ฆฝ ์‹คํ–‰ํ˜•์€ app_offline ๋™์ž‘๊ณผ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค. ์•ฑ ์˜คํ”„๋ผ์ธ ํŒŒ์ผ์€ w3wp.exe(ASP.NET Core ๋ชจ๋“ˆ์— ์˜ํ•ด)์— ์˜ํ•ด ๋ชจ๋‹ˆํ„ฐ๋ง๋ฉ๋‹ˆ๋‹ค.

@DarqueWarrior ์กฐ์–ธ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ํ•œ ๊ฐ€์ง€ ์˜๊ฒฌ์ž…๋‹ˆ๋‹ค. ๋™์ผํ•œ ์•ฑ ์„œ๋น„์Šค์˜ ๊ฐ€์ƒ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ๋‹ค์ค‘ ์‚ฌ์ดํŠธ๋ฅผ ๋ฐฐํฌํ•˜๋Š” ๊ฒฝ์šฐ ์Šฌ๋กฏ(์ œ ๊ธฐ์–ต์ด ๋งž๋‹ค๋ฉด)์ด ๋ชจ๋“  ์‚ฌ์ดํŠธ์—์„œ ์ž‘๋™ํ•˜๋ฏ€๋กœ ์ด์ „์— ๋ชจ๋“  ์‚ฌ์ดํŠธ๋ฅผ ๋ฐฐํฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์Šค์™€ํ•‘. ์ด๊ฒƒ์€ ๋ฒˆ๊ฑฐ๋กœ์šด ์ผ์ž…๋‹ˆ๋‹ค. ์ง€๊ธˆ ์šฐ๋ฆฌ๋Š” ๊ฐœ๋ณ„ ๊ฐ€์ƒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋ถ€ํ’ˆ(๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค)์„ ์‰ฝ๊ฒŒ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ๋“ค์„ ๋ณ„๋„์˜ ์•ฑ ์„œ๋น„์Šค๋กœ ํผ๋œจ๋ฆด ์ˆ˜ ์žˆ์ง€๋งŒ, ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ/๊ฒŒ์ดํŠธ์›จ์ด๊ฐ€ ๋‹ค์‹œ ๊ฐ™์€ ๋„๋ฉ”์ธ์„ ๊ณต์œ ํ•˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด infront๊ฐ€ ํ•„์š”ํ•˜๊ณ , ๋˜ํ•œ ์šฐ๋ฆฌ๊ฐ€ ์ง€๊ธˆ ๊ธฐ๊บผ์ด ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ๋งŽ์€ ์‹œ๊ฐ„์ด ์†Œ์š”๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ๋‚˜๋Š” ๋‹น์‹ ์˜ ์ œ์•ˆ์ด ๋” ๋ฐ”๋žŒ์งํ•œ ๋ฐฉ๋ฒ•์ด๋ผ๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋‹จ์ง€ ์ง€๊ธˆ ์šฐ๋ฆฌ์™€ ๋งž์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์—ฌ์ „ํžˆ ์‚ฌ์šฉ ์ค‘์ธ ํŒŒ์ผ ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์„ ๊ธฐ๋Œ€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

@pksorensen ๋”๋ฏธ ์‚ฌ์ดํŠธ์— ๋ณต์ œ๋ฅผ ์„ค์ •ํ•˜๊ณ  ๊ทธ ์ด๋ฆ„์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์ดํŠธ๊ฐ€ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ์ƒํƒœ์—์„œ ๋ณด๊ณ  ์‹ถ๊ณ , Kudu ์ฝ˜์†”์—์„œ ์ˆ˜๋™์œผ๋กœ app_offline.htm์„ ์ƒ์„ฑํ•ด๋„ ์ข…๋ฃŒ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค .

@shirhatti ANCM ์ด ํ”„๋กœ์„ธ์Šค๋ฅผ ์ข…๋ฃŒํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋Š” ์›์ธ์ด ๋ฌด์—‡์ธ์ง€ ์•„์‹ญ๋‹ˆ๊นŒ? ์–ผ๋งˆ๋‚˜ ๊ณต๊ฒฉ์ ์œผ๋กœ ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๊นŒ?

@davidebbo ์‹œ๊ฐ„์ด ์กฐ๊ธˆ ๊ฑธ๋ฆฌ์ง€๋งŒ ์žฌํ˜„์„ ์œ„ํ•ด ๋ญ”๊ฐ€๋ฅผ ํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

@davidebbo ์ƒˆ ASP.NET Core ์•ฑ๊ณผ ์ƒˆ Azure App Service๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. Azure์˜ "์ง€์†์  ์ „๋‹ฌ(๋ฏธ๋ฆฌ ๋ณด๊ธฐ)" ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”๋ฐ ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

2017-03-30T02:54:36.5648892Z ##[์˜ค๋ฅ˜]App Service๋ฅผ ๋ฐฐํฌํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.
2017-03-30T02:54:36.5658893Z ##[์˜ค๋ฅ˜]์˜ค๋ฅ˜ ์ฝ”๋“œ: ERROR_FILE_IN_USE
2017-03-30T02:54:37.1850861Z ์ถ”๊ฐ€ ์ •๋ณด: ์™ธ๋ถ€ ํ”„๋กœ์„ธ์Šค์— ์˜ํ•ด ์ž ๊ฒจ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— Web Deploy๋Š” ๋Œ€์ƒ์—์„œ 'myApp.dll' ํŒŒ์ผ์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ฒŒ์‹œ ์ž‘์—…์ด ์„ฑ๊ณตํ•˜๋ ค๋ฉด ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜์—ฌ ์ž ๊ธˆ์„ ํ•ด์ œํ•˜๊ฑฐ๋‚˜ ๋‹ค์Œ ๊ฒŒ์‹œ ์‹œ๋„์—์„œ .Net ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ๋Œ€ํ•ด AppOffline ๊ทœ์น™ ์ฒ˜๋ฆฌ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_FILE_IN_USE๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
2017-03-30T02:54:37.1860517Z ์˜ค๋ฅ˜ ์ˆ˜: 1.
2017-03-30T02:54:37.4179909Z ##[์˜ค๋ฅ˜]์˜ค๋ฅ˜: C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe๊ฐ€ ๋ฐ˜ํ™˜ ์ฝ”๋“œ์™€ ํ•จ๊ป˜ ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค: 4294967295

D:\home\site\wwwroot์— app_offline.htm์„ ์ˆ˜๋™์œผ๋กœ ์ƒ์„ฑํ•˜๋ฉด ์‹ค์ œ๋กœ dotnet.exe ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ค‘์ง€๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด "์ง€์†์  ์ „๋‹ฌ(๋ฏธ๋ฆฌ๋ณด๊ธฐ)" ์ž์ฒด์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๊นŒ?

์œ„์— ์ถ”๊ฐ€๋กœ ์ˆ˜๋™์œผ๋กœ VSTS ๋ฆด๋ฆฌ์Šค ์ •์˜, ์ถ”๊ฐ€ ๋ฐฐํฌ ์˜ต์…˜์œผ๋กœ ์ด๋™ํ•˜์—ฌ "์•ฑ์„ ์˜คํ”„๋ผ์ธ์œผ๋กœ ์ „ํ™˜"์„ ์„ ํƒํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ ๋ช‡ ๊ฐ€์ง€ ์งˆ๋ฌธ์„ ์ œ๊ธฐํ•ฉ๋‹ˆ๋‹ค.
"์•ฑ ์˜คํ”„๋ผ์ธ์œผ๋กœ ์ „ํ™˜"์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์„ ํƒ ํ•ด์ œ๋˜์–ด ์žˆ๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ด ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ์—ฌ์ „ํžˆ ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ(์˜ˆ: ๊ฐ€๋™ ์ค‘์ง€ ์‹œ๊ฐ„์„ ์ค„์ž…๋‹ˆ๊นŒ)?

๊ทธ๋ ‡๋‹ค๋ฉด ์™œ ์‹คํŒจํ•ฉ๋‹ˆ๊นŒ? ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ "์—ฐ์† ๋ฐฐ์†ก(๋ฏธ๋ฆฌ๋ณด๊ธฐ)"์ด ์„ ํƒ๋˜์ง€ ์•Š์€ ์ƒํƒœ๋กœ ์œ ์ง€๋˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์–ด๋Š ์ชฝ์ด๋“  - ์–ด๋”˜๊ฐ€์— ๋ฒ„๊ทธ๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@Jon12345 : ์ด ์Šค๋ ˆ๋“œ๋Š” app_offline.htm์ด ํ•ต์‹ฌ ์•ฑ์—์„œ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์—ฌ๋ถ€์— ๋Œ€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ VSTS๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์€ ์‹ค์ œ๋กœ ๋ณ„๋„์˜ ํ† ๋ก ์ด๋ฉฐ, ์ด๋Š” VSTS ํฌ๋Ÿผ(์•„๋งˆ๋„ https://social.msdn.microsoft.com/Forums/vstudio/en-US/ ํ™ˆ?ํฌ๋Ÿผ=TFService).

์ด ์‹œ์ ์—์„œ ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์€ ์ˆ˜์ • ํ›„ ์ฐจ๋‹จ์ด ํ•ด์ œ๋œ ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. @pksorensen ์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๋ณด๊ณ ๊ฐ€ ํ•˜๋‚˜ ์žˆ์—ˆ๊ณ  ์šฐ๋ฆฌ๋Š” repro ์•ฑ์ด ์‚ดํŽด๋ณด๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์—ฌ์ „ํžˆ ์ด๊ฒƒ์„ TFS 2017 ์—…๋ฐ์ดํŠธ 1์—์„œ ์–ป์Šต๋‹ˆ๋‹ค.

@jdshkolnik appoffline.htm ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๋„๋ก ์„ค์ •๋˜์—ˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ด ๋ฌธ์ œ์˜ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚ฉ๋‹ˆ๋‹ค. ์œ„์— ์„ค๋ช…๋œ ๋Œ€๋กœ ์ˆ˜๋™ appoffline.hm ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜์‹ญ์‹œ์˜ค.

@davidebbo ๋„ค, ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. ์˜ˆ์•ฝ๋œ ์•ผ๊ฐ„ ๋ฐฐํฌ๊ฐ€ ์ฒซ ๋ฒˆ์งธ ์‹œ๋„์— ์‹คํŒจํ•˜๊ณ  ์ผ๋ฐ˜์ ์œผ๋กœ ์„ฑ๊ณตํ•˜๋Š” ์ˆ˜๋™ ์žฌ๋ฐฐํฌ ์‹œ๋„๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋กœ ์ €ํฌ ํšŒ์‚ฌ๋Š” ๊ท€ํ•˜์˜ ํšŒ์‚ฌ์™€ ์—ฐํ•ฉ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ Skype for Business ๋ฐ์Šคํฌํƒ‘ ๊ณต์œ ๋ฅผ ํ†ตํ•ด ๊ท€ํ•˜์—๊ฒŒ ์‰ฝ๊ฒŒ ๋ณด์—ฌ๋“œ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@jdshkolnik ์œ„์—์„œ ๋…ผ์˜ํ•œ ์ˆ˜๋™ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ–ˆ๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ฐฉ์ •์‹์—์„œ ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒƒ์„ ์–ป๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

์ค‘์š” : ์ด ๋ฌธ์ œ๋Š” VSTS ๋˜๋Š” ๊ธฐํƒ€ ๊ฒŒ์‹œ ์›Œํฌํ”Œ๋กœ์˜ ๋ฌธ์ œ๋ฅผ ์กฐ์‚ฌํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์˜ค์ง ํ•œ ๊ฐ€์ง€์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค: appoffline.htm์ด ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

@davidebbo ์ˆ˜๋™์œผ๋กœ app_offline.htm์„ ํด๋”์— ๋„ฃ์ž๋งˆ์ž ์˜คํ”„๋ผ์ธ์ด ๋ฉ๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์—ฌ๊ธฐ์—์„œ ์™„๋ฒฝํ•˜๊ฒŒ ์ฃผ์ œ์ธ์ง€ ์•„๋‹Œ์ง€๋ฅผ ๋” ์ž˜ ๊ตฌ๋ณ„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์•„๋Š” ๊ฒƒ์€ ๋ฌธ์ œ ์—†์ด ์ž‘๋™ํ•˜๋˜ ์‚ฌ์ดํŠธ์— ๋Œ€ํ•ด ์ž‘๋…„์— ๊ฐ‘์ž๊ธฐ ๋‚˜ํƒ€๋‚˜ ๊ทธ ์ดํ›„๋กœ ์ •๊ธฐ์ ์œผ๋กœ ๊ณ ๊ฐœ๋ฅผ ๋“ค๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

##[section]Starting: Deploy IIS App: \\usserver\Deploy\CD_146_QA\Installer\Install\Web\App.Web.zip
==============================================================================
Task         : WinRM - IIS Web App Deployment
Description  : Connect via WinRM, to deploy Web project locally on IIS, using Web Deploy
Version      : 1.4.3
Author       : Microsoft Corporation
Help         : [More Information](http://aka.ms/IISWebDeploy)
==============================================================================

Preparing task execution handler.

Executing the powershell script: I:\Agent\_work\_tasks\IISWebAppDeploy_50acc50f-7d15-470b-83c1-578b3f3eeba2\1.4.3\Main.ps1
name='db-Web.config Connection String',value='Data Source=dbserver;Database=Internal_QA;Type System Version=SQL Server 2012;User ID=xxx;Password=yyy;Persist Security Info=True')

Starting deployment of IIS Web Deploy Package : \\usserver\Deploy\CD_146_QA\Installer\Install\Web\App.Web.zip

Performing deployment in sequentially on all machines.

Deployment started for machine: usserver with port 5985.

Deployment status for machine usserver : Failed

##[error]Microsoft.PowerShell.Commands.WriteErrorException: System.Exception: Error Code: ERROR_FILE_IN_USE

For more info please refer to http://aka.ms/iisextnreadme

##[error]PowerShell script completed with 1 errors.

##[section]Finishing: Deploy IIS App: \\usserver\Deploy\CD_146_QA\Installer\Install\Web\App.Web.zip

@jdshkolnik ๋‚ด ์ถ”์ธก์œผ๋กœ๋Š” ์ด ๋ฐฐํฌ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋ฌด์—‡์„ ํ•˜๋“  ํŒŒ์ผ์„ ๊ฒŒ์‹œํ•˜๊ธฐ ์ „์— appoffline.htm์„ ์ƒ์„ฑํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. VSTS ๊ตฌ์„ฑ ๋ฌธ์ œ ๋˜๋Š” ๋ฒ„๊ทธ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ANCM์˜ ๊ด€์ ์—์„œ ์ˆ˜ํ–‰ํ•œ ํ…Œ์ŠคํŠธ๋Š” appoffline์ด ์ƒ์„ฑ๋  ๋•Œ ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•˜๊ณ  ์žˆ์Œ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

@davidebbo ๋‚ด๊ฐ€ ํ•œ ์ผ์ด ์ตœ์ข… ํ…Œ์ŠคํŠธ์ธ์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ํ›„ ๋‘ ๋ฒˆ์งธ ์ˆ˜๋™ ์‹œ๋„๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์„ฑ๊ณตํ•ฉ๋‹ˆ๋‹ค. app_offline.htm์„ ์ฐจ๋‹จํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฐํฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋˜๊ณ  ์žˆ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

7.1.1971.0์—์„œ ์ด ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„ ๋ฌธ์ œ๊ฐ€ ๊ณ„์† ๋ฐœ์ƒํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. VS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐํฌํ•˜๋ ค๊ณ  ํ•˜๋ฉด ํŒŒ์ผ ์ž ๊น€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ์•ฑ์ด ์—ฌ์ „ํžˆ ์‹คํ–‰ ์ค‘์ด๊ณ  ์ถฉ๋ถ„ํžˆ ์‹คํ–‰ ์ค‘์ธ์ง€ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. Kudu ๋ช…๋ น์ค„์„ ์—ด์–ด wwwroot ๋””๋ ‰ํ„ฐ๋ฆฌ์™€ App_Offline.htm์ด ํด๋”์— ์žˆ์—ˆ์ง€๋งŒ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์—ฌ์ „ํžˆ ์‹คํ–‰ ์ค‘์ธ ํŒŒ์ผ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ touch app_offline.htm์„ ์ž…๋ ฅํ•˜๊ณ  ํ”„๋กœ์„ธ์Šค๊ฐ€ ์˜ˆ์ƒ๋Œ€๋กœ ์‹คํ–‰์„ ๋ฉˆ์ท„์Šต๋‹ˆ๋‹ค. ๋ชจ๋“ˆ์„ ๋‹ค์‹œ ํ™•์ธํ–ˆ๊ณ  ๋‚ด aspnetcore.dll ๋ฒ„์ „์€ 7.1.1971.0์ž…๋‹ˆ๋‹ค.

@alexgritton ์ด์ƒํ•ฉ๋‹ˆ๋‹ค. ANCM์ด ์ฒ˜์Œ์— ํŒŒ์ผ์„ ๊ฐ์ง€ํ•˜์ง€ ๋ชปํ–ˆ์Œ์„ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ง€์†์ ์œผ๋กœ ๋ฐœ์ƒํ•ฉ๋‹ˆ๊นŒ ์•„๋‹ˆ๋ฉด ๋ฌด์ž‘์œ„๋กœ ๋ฐœ์ƒํ•ฉ๋‹ˆ๊นŒ?

์˜ค๋Š˜ Azure App Services์—์„œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค์—ˆ์œผ๋ฉฐ ํ•˜๋ฃจ ์ข…์ผ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ์ผ๊ด€๋˜๊ฒŒ ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ์˜ ์›์ธ์ด ๋  ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

์„ค๋งˆ. ANCM ์ „๋ฌธ๊ฐ€๊ฐ€ ํŒŒ์ผ ๋ณ€๊ฒฝ ๋ชจ๋‹ˆํ„ฐ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์ดˆ๊ธฐ ์ƒ์„ฑ์ด ๊ฐ์ง€๋˜์ง€ ์•Š๋Š” ์ด์œ ๋ฅผ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

@davidebbo ์ •ํ™•ํžˆ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ํŒ€์—๋Š” ๋นŒ๋“œ ์„œ๋ฒ„์—์„œ AppBuild.htm ํŒŒ์ผ์„ app_offline.htm์œผ๋กœ ๋Œ€์ƒ ์‚ฌ์ดํŠธ์— ๋ณต์‚ฌํ•˜๋Š” Fake ๋นŒ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ msdeploy๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํด๋”๋ฅผ ๋™๊ธฐํ™”ํ•˜๊ณ  ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค ์˜ค๋ฅ˜๋กœ ์ธํ•ด ์—ด๋ฆฌ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ์„ ํ„ฐ์น˜ํ•˜๋ฉด ํŒŒ์ผ ์ด๋ฆ„์„ app_offline.htm์—์„œ app_offline.htm.rename์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ๋‹ค์‹œ ๋˜๋Œ๋ฆฌ๊ฑฐ๋‚˜ ํŒŒ์ผ ํƒ์ƒ‰๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ app_offline.htm์„ ๋ฎ์–ด์“ฐ๋ฉด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ œ๋Œ€๋กœ ์ค‘์ง€๋ฉ๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ†ตํ•ด ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ์ดํ•ด๊ฐ€ ๋˜์ง€ ์•Š์ง€๋งŒ ์ˆ˜๋™์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋ฉด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ: ๋งˆ์ง€๋ง‰ ์“ฐ๊ธฐ ์‹œ๊ฐ„์„ ์—…๋ฐ์ดํŠธํ•˜๋ฉด ์ง€์†์ ์œผ๋กœ ์ข…๋ฃŒ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค.

Target "StopApi" (fun _ ->                                    
    trace "Deployment - Stopping Api"                 

    for folder in apiWebDeployShare do                        
        let offlineFile = folder @@ "app_offline.htm"         
        let offlineFileSource = folder @@ "AppOffline.htm"    
        CopyFile offlineFile offlineFileSource                
        File.SetLastWriteTime (offlineFile, DateTime.Now)     
)                

app_offline.htm ํŒŒ์ผ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ์ฝ”๋“œ์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@derekgreeer ๊ทธ๋ž˜์„œ ๋‹น์‹ ์ด๋ณด๊ณ ์žˆ๋Š” ๊ฒƒ์€ ํŒŒ์ผ์„ ๋ณต์‚ฌ ํ•  ๋•Œ ์ข…๋ฃŒ๊ฐ€ ํŠธ๋ฆฌ๊ฑฐ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Kudu ์ฝ˜์†”์—์„œ ์ด๊ฒƒ์„ ์žฌํ˜„ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์˜ˆ

  • Kudu ์ฝ˜์†”๋กœ ์ด๋™
  • touch app_offline.htm in D:\home\site ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋‹ค๋ฅธ ํด๋”์— ๋นˆ ํŒŒ์ผ ์ƒ์„ฑ
  • copy app_offline.htm wwwroot ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋งˆ์ง€๋ง‰ ์“ฐ๊ธฐ ์‹œ๊ฐ„์ด ๋ณด์กด๋˜๊ณ  ์ƒ์„ฑ ์‹œ๊ฐ„์ด ์—…๋ฐ์ดํŠธ๋ฉ๋‹ˆ๋‹ค(ํ‘œ์ค€ ํŒŒ์ผ ๋ณต์‚ฌ ๋™์ž‘).

๊ฒฐ๊ณผ: dotnet.exe ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ฆ‰์‹œ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค(Kudu ํ”„๋กœ์„ธ์Šค ํƒ์ƒ‰๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Œ).

์ด ๋™์ผํ•œ ๋‹จ๊ณ„๊ฐ€ ํšจ๊ณผ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด ์žฌํ˜„ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ๋ฌด์—‡์ด ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์‚ฌ์‹ค ์ด ๋ฌธ์ œ๋Š” ๊ฐ„ํ—์ ์œผ๋กœ ๋ฐœ์ƒํ–ˆ์œผ๋ฉฐ Windows Server 2012์—์„œ IIS 8์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ๋ง๋ถ™์˜€์Šต๋‹ˆ๋‹ค.

์˜ค๋Š˜ ์•„์นจ์— ๋‚ด ์˜๋„๋Š” Kudu ์ฝ˜์†”์„ ์„ค์ •ํ•˜๊ธฐ ์ „์— powershell ๋˜๋Š” ๋ฐฐ์น˜ ์Šคํฌ๋ฆฝํŠธ๋กœ ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด์ง€๋งŒ, ๋จผ์ € ํ…Œ์ŠคํŠธ Fake ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ๋กœ ํ…Œ์ŠคํŠธํ•œ ํ›„ ์šฐ๋ฆฌ ํŒ€์ด ๊ธˆ์š”์ผ์— app_offline.htm ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•(๊ธฐ์กด ํŒŒ์ผ ๋ณต์‚ฌ, ์ƒˆ ํŒŒ์ผ ์ƒ์„ฑ ๋“ฑ), ํ˜„์žฌ ์ž‘๋™ ์ค‘์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋•Œ๋•Œ๋กœ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ข…๋ฃŒํ•˜๊ณ  ๋‹ค๋ฅธ ์‹œ๊ฐ„์—๋Š” ์ข…๋ฃŒํ•˜์ง€ ์•Š๋Š” ๋นŒ๋“œ ์‹คํŒจ ํŒจํ„ด์„ ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค. ์‹คํŒจํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด ์ผ๊ด€๋˜๊ฒŒ ๊ทธ๋ ‡๊ฒŒ ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ธˆ์š”์ผ์— ๋ช‡ ์‹œ๊ฐ„ ๋™์•ˆ ํ…Œ์ŠคํŠธํ–ˆ์œผ๋ฉฐ ์ƒˆ๋กœ์šด app_offline.htm ํŒŒ์ผ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ ์™ธ์—๋Š” ์•„๋ฌด ๊ฒƒ๋„ ํ•˜์ง€ ์•Š๋Š” ๋‹จ์ˆœํ•œ Fake ๋นŒ๋“œ๋กœ ์ผ๊ด€๋˜๊ฒŒ ๋ฉˆ์ถ”์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ฃผ๊ธฐ์ ์œผ๋กœ ํŒŒ์ผ์„ ์ˆ˜๋™์œผ๋กœ ์ƒ์„ฑํ•˜๊ณ  ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ค‘์ง€๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์žฅ๊ธฐ๊ฐ„ ์‚ฌ์šฉํ•œ ํ›„์—๋„ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜์ง€ ์•Š๋Š” ์ƒํ™ฉ์ด ์•„๋‹Œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋ฉด powershell ๋ฐ/๋˜๋Š” ๋ฐฐ์น˜ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ์„ ์ƒ์„ฑํ•ด๋„ ์—ฌ์ „ํžˆ ๋ฌธ์ œ๊ฐ€ ๋ฐ˜์˜๋˜๋Š”์ง€ ํ™•์ธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

@davidebbo ๊ธ€์Ž„, ์  ์žฅ ... ๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ ์‹œ๊ฐ„์„ ์—…๋ฐ์ดํŠธํ•˜๋Š” ์ค„์„ ์ฃผ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ์žŠ์–ด ๋ฒ„๋ ธ๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์ œ๋กœ ์—ฌ์ „ํžˆ ๋™์ผํ•œ ๋™์ž‘์„ ๋ณด์—ฌ์ฃผ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ powershell๊ณผ ๋ฐฐ์น˜ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•ด ๋ณด๊ณ  ์—…๋ฐ์ดํŠธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

@davidebbo

ํ˜ผ๋ž€์„ ๋“œ๋ ค ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์ž, ์ œ๊ฐ€ ์ฐพ์€ ๊ฒƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ๋‚ด์šฉ์ด ํฌํ•จ๋œ ๋ฐฐ์น˜ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๋ฉด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์•ˆ์ •์ ์œผ๋กœ ์ข…๋ฃŒ๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

echo "" > \\testserver\e$\Site.Api\app_offline.htm

๋™๋“ฑํ•œ bash ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์•ˆ์ •์ ์œผ๋กœ ์ข…๋ฃŒ๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

#!/bin/bash

echo "" > //testserver/e$/Site.Api/app_offline.htm

๋‹ค์Œ ๋‚ด์šฉ๊ณผ ํ•จ๊ป˜ powershell ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

New-Item \\testserver\e$\Site.Api\app_offline.htm -type file

Fake์™€ Powershell์€ ๋ชจ๋‘ CLR์—์„œ ์‹คํ–‰๋˜์ง€๋งŒ DOS ๋ณต์‚ฌ ๋ช…๋ น, bash ๋ฐ Kudu ์ฝ˜์†”์€ ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์„ ๊ฐ์•ˆํ•  ๋•Œ ์ด๊ฒƒ์€ CLR์„ ํ†ตํ•ด ์ƒ์„ฑ๋˜๋Š” ํŒŒ์ผ๊ณผ ๊ด€๋ จ๋œ ๋ฌด์–ธ๊ฐ€๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด์ƒํ•œ ์ ์€ ๋‹ค์–‘ํ•œ ๋ฒ„์ „ ๊ฐ„์— ๊ฒฐ๊ณผ ํŒŒ์ผ์˜ ์ƒ์„ฑ/์—…๋ฐ์ดํŠธ ํƒ€์ž„์Šคํƒฌํ”„์— ์ฐจ์ด๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@derekgreer ์˜ค, ๊ทธ๋ž˜์„œ ๋‹น์‹ ์€ Azure App Service์—์„œ ์ „ํ˜€ ์‹คํ–‰๋˜๊ณ  ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ด ์‚ฌ๊ฐ€์—์„œ ์ œ ๊ด€์ ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ASP.NET ์‚ฌ๋žŒ๋“ค์ด ์ด์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ทธ๋งŒํ•œ ๊ฐ€์น˜๊ฐ€ ์žˆ์ง€๋งŒ App Service์—์„œ ์žฌํ˜„ํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

  • Kudu์˜ PowerShell ์ฝ˜์†” ์‚ฌ์šฉ
  • site\wwwroot ํด๋”๋กœ ์ด๋™
  • New-Item app_offline.htm -type file ์‹คํ–‰

@moozzyk ์•ฑ ์„œ๋น„์Šค ์™ธ๋ถ€์—์„œ @derekgreer ์˜ ์žฌํ˜„์„ ์กฐ์‚ฌํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ถ”๊ฐ€ ์ •๋ณด:

ํŒŒ์ผ ํƒ์ƒ‰๊ธฐ๋ฅผ ํ†ตํ•œ ์ƒ์„ฑ, ๋ณต์‚ฌ, ์ด๋ฆ„ ๋ฐ”๊พธ๊ธฐ ๋“ฑ์ด ์ผ๊ด€๋˜๊ฒŒ ์ž‘๋™ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— .Net ๊ธฐ๋ฐ˜ ํŒŒ์ผ ํƒ์ƒ‰๊ธฐ ์•ฑ์ด Fake ๋ฐ PowerShell์—์„œ ๋ณด๊ณ  ์žˆ๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜์˜ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์šด๋กœ๋“œ ๋ฐ ํ…Œ์ŠคํŠธ๋ฅผ ๋งˆ์นœ "Nomad"๋ผ๋Š” .Net ๊ธฐ๋ฐ˜ ํŒŒ์ผ ํƒ์ƒ‰๊ธฐ๊ฐ€ ์žˆ์œผ๋ฉฐ ๊ฒฐ๊ณผ๋Š” Fake ๋ฐ PowerShell๊ณผ ์ผ์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค. app_offline.htm ํŒŒ์ผ์„ ์ƒ์„ฑํ•  ๋•Œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ค‘์ง€๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ํŒŒ์ผ ์ด๋ฆ„์„ ๋ฐ”๊พธ๊ณ  ๋‹ค์‹œ app_offline.htm์œผ๋กœ ์ด๋ฆ„์„ ๋ฐ”๊พธ๋ฉด Core ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

https://github.com/aspnet/AspNetCoreModule/blob/93ace1b84bd79382233cb39b858611d2db05552e/src/AspNetCore/Src/filewatcher.cxx#L321

์ด ๋ฐฉ๋ฒ•์€ "FILE_NOTIFY_CHANGE_CREATION" ํ”Œ๋ž˜๊ทธ๋ฅผ ํฌํ•จํ•˜๊ธฐ๋ฅผ ์›ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

Fake, PowerShell ๋ฐ Nomad์— ๊ณตํ†ต์ ์ธ .Net API๊ฐ€ ์ผ๋ฐ˜ ํŒŒ์ผ ์ƒ์„ฑ๊ณผ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ์ด๋Ÿฌํ•œ ๋‹ค๋ฅธ ํ”Œ๋ž˜๊ทธ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜์ง€ ์•Š๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

@shirhatti ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ด ์ž ์žฌ์ ์ธ ANCM ๋ฌธ์ œ๋ฅผ ์กฐ์‚ฌํ•˜๋„๋ก ํ•ด์ฃผ์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@davidebbo ์—์ดํฌ . ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ์กฐ์‚ฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค

๋‚˜๋Š” ๋งค์šฐ ๋น„์Šทํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Windows ํƒ์ƒ‰๊ธฐ์—์„œ app_offline.htm ํŒŒ์ผ์„ ๋ณต์‚ฌํ•˜๋ฉด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ค‘์ง€๋˜์ง€๋งŒ ๋นŒ๋“œ ์„œ๋ฒ„์—์„œ COPY app_offline.htm \server\share\siteapp_offline.htm์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑํ•˜๋ฉด ์ค‘์ง€๋˜์ง€ ์•Š๊ณ  ํŒŒ์ผ์ด ์ž ๊ธด ์ƒํƒœ๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. .

@gulbanana ๋‹น์‹ ๊ณผ ๋˜‘๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ ํ•ด๊ฒฐํ•˜์…จ๋‚˜์š”? @shirhatti ์กฐ์‚ฌ์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์ด๊ฒƒ์€ dotnet.exe๊ฐ€ app_offline.htm์— ์˜ํ•ด ์ข…๋ฃŒ๋˜์ง€ ์•Š์•„ ๋ฐœ์ƒํ•˜๋Š” ํŒŒ์ผ ๋ณต์‚ฌ ์‹คํŒจ๋กœ ์ธํ•ด CI ํŒŒ์ดํ”„๋ผ์ธ์ด ํ•ญ์ƒ ์‹คํŒจํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํŒ€์„ ๋ฏธ์น˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

echo "<html>page content</html>" > \\server\share\app_offline.htm ๋ผ์ธ์„ ๋”ฐ๋ผ ๋ฌด์–ธ๊ฐ€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋ฒ„๊ทธ๊ฐ€ ANCM์ด ํŒŒ์ผ ์ƒ์„ฑ์˜ ์ผ๋ถ€ ๋ฐฉ๋ฒ•๋งŒ์„ ๊ด€์ฐฐํ•˜๋Š” ๊ฒƒ์— ๊ด€ํ•œ ๋ฒ„๊ทธ๋ผ๊ณ  @derekgreeer ๊ฐ€ ์˜ณ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉฐ, ์ด ๋ฐฉ๋ฒ•์„ ํฌ์ฐฉํ•ฉ๋‹ˆ๋‹ค.

@derekgreer
์ง€๊ธˆ ๋ฌธ์ œ๋ฅผ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ํ…Œ์ŠคํŠธ ์‹œ์Šคํ…œ์—์„œ ๊ท€ํ•˜์˜ ์žฌํ˜„ ๋ช…๋ น ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ๋ช…๋ น์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. (์ฐธ๊ณ : ์•„๋ž˜ ๋ช…๋ น์€ ๋นˆ(ํŒŒ์ผ ํฌ๊ธฐ 0) ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

new-item \\iisdist\privates\jhkim\temp\PublishOutput\app_offline.htm -ItemType file

ํ•œ ๊ฐ€์ง€ ํฅ๋ฏธ๋กœ์šด ์ ์€ app_offline.htm ํŒŒ์ผ์„ ์ƒ์„ฑํ•  ๋•Œ ์ผ๋ถ€ ํŒŒ์ผ ์ฝ˜ํ…์ธ ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด -value "test" ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

new-item \\iisdist\privates\jhkim\temp\PublishOutput\app_offline.htm -ItemType file -value "test"

Repro ํ™˜๊ฒฝ์—์„œ ๋™์ผํ•œ ์ฆ์ƒ์ด ๋‚˜ํƒ€๋‚˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
๊ทธ๋ ‡๋‹ค๋ฉด ์ด ๋ฌธ์ œ๋Š” new-item powershell ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ํŠน๋ณ„ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ๋นˆ app_offline.htm์ด ์ƒ์„ฑ๋  ๋•Œ๋งŒ ๋ฐœ์ƒํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@gulbanana
๋ณต์‚ฌ ๋ช…๋ น์œผ๋กœ ์ด ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ท€ํ•˜์˜ ์žฌํ˜„์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚ด ํ…Œ์ŠคํŠธ ์‹œ์Šคํ…œ์—์„œ ๋™์ผํ•œ ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ์žฌํ˜„ ๋‹จ๊ณ„๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์›ํ•˜๋Š” ๋‚ด์šฉ์ด ํฌํ•จ๋œ ํŒŒ์ผ์„ ๋ฐฐํฌ ํด๋”์— ๋ณต์‚ฌํ•œ ๊ฒฝํ—˜์ด ์žˆ์œผ๋ฏ€๋กœ ํ•ด๋‹น ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  app_offline.htm ํŒŒ์ผ์ด ๋น„์–ด ์žˆ๋Š”์ง€ ์—ฌ๋ถ€์™€ ๊ด€๋ จ์ด ์—†์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ๊ฒฝํ—˜์— ๋”ฐ๋ฅด๋ฉด ์‹ค์ œ๋กœ ์ž‘๋™ํ•˜๋Š” ๊ฒฝ์šฐ ๋‘ ๋ฒˆ์งธ ๋ช…๋ น์œผ๋กœ ์ธํ•ด ํŒŒ์ผ ๋ณ€๊ฒฝ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ  ๋‚ด์šฉ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋‚ด์šฉ์ด ์žˆ๊ฑฐ๋‚˜ ์—†๋Š” ํŒŒ์ผ์„ ๋งŒ๋“œ๋Š” ๋ฐ ์‚ฌ์šฉํ•œ ๋ชจ๋“  .net ๊ด€๋ จ ํ”„๋กœ์„ธ์Šค๋Š” ํ”„๋กœ์„ธ์Šค ์ข…๋ฃŒ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

@shirhatti ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์ฝ”๋“œ๊ฐ€ "FILE_NOTIFY_CHANGE_CREATION" ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๊นŒ?

@derekgreeer ๋งˆ์ง€๋ง‰ โ€‹โ€‹์ ‘๊ทผ ๋ณ€๊ฒฝ ๋ฐ ์†์„ฑ ๋ณ€๊ฒฝ์„ ์ œ์™ธํ•œ ๋ชจ๋“  ์œ ํšจํ•œ ํ”Œ๋ž˜๊ทธ๋ฅผ ์ˆ˜์‹ ํ•ฉ๋‹ˆ๋‹ค.
FILE_NOTIFY_VALID_MASK & ~FILE_NOTIFY_CHANGE_LAST_ACCESS & ~FILE_NOTIFY_CHANGE_ATTRIBUTES

์˜ˆ, ์šฐ๋ฆฌ๋Š” ์ด๋ฏธ FILE_NOTIFY_CHANGE_CREATION ๋ฅผ ๋“ฃ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ์กฐ: @pan-wang

@shirhatti ์•„, ์ด์ œ ์ดํ•ดํ–ˆ์Šต๋‹ˆ๋‹ค. ํ”Œ๋ž˜๊ทธ๊ฐ€ ๋ณ€๊ฒฝ ์ƒ์„ฑ์„ ํฌํ•จํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋ชฐ๋ž์Šต๋‹ˆ๋‹ค. ๊ถ๊ธˆํ•œ๋ฐ ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๊นŒ?

๋น„์–ด ์žˆ๋Š” app_offline.htm์— ๋ฐ˜์‘ํ•˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. https://github.com/aspnet/IISIntegration/issues/174

@moozzyk @derekgreeer ํ™•์ธํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ข‹์•„, ๋‚˜๋Š” ๋˜ํ•œ ๋ฌธ์ œ๊ฐ€ ๋นˆ ํŒŒ์ผ ๋‚ด์šฉ๊ณผ ์ง์ ‘์ ์ธ ๊ด€๋ จ์ด ์—†๋‹ค๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทผ๋ณธ ์›์ธ์„ ํŒŒ์•…ํ•œ ํ›„ ์—…๋ฐ์ดํŠธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

@jhkimnew ๋” ์ด์ƒ ์ •ํ™•ํ•œ ์„ค์ •์ด ๊นจ์ ธ ์žˆ์ง€ ์•Š์ง€๋งŒ ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ANCM์„ ์‚ฌ์šฉํ•˜์—ฌ asp.net ์ฝ”์–ด ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ํ˜ธ์ŠคํŒ…ํ•˜๋Š” Windows Server 2008 r2์—์„œ ์‹คํ–‰๋˜๋Š” IIS
  • ๋นŒ๋“œ ์„œ๋ฒ„๋„ ๋™์ผํ•œ ๋„๋ฉ”์ธ์— ์žˆ๋Š” 2008r2์ž…๋‹ˆ๋‹ค.
  • IIS ์„œ๋ฒ„์—๋Š” Windows ๊ณต์œ ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ณต์œ ๋˜๋Š” ์›น ์‚ฌ์ดํŠธ ๋ฌผ๋ฆฌ์  ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋„๋ฉ”์ธ ์‚ฌ์šฉ์ž(๋นŒ๋“œ ์„œ๋ฒ„์˜ ๊ณ„์ •)๋Š” ๋นŒ๋“œ ์„œ๋ฒ„์—์„œ powershell ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    ์ด ์Šคํฌ๋ฆฝํŠธ๊ฐ€ Windows ๋ณต์‚ฌ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค๋ฅธ ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ๊ธฐ์กด ํŒŒ์ผ์—์„œ app_offline์œผ๋กœ ๋ณต์‚ฌํ•˜๋Š” ๊ฒฝ์šฐ ํ˜ธ์ŠคํŒ… ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋Œ€์‹  "echo"(mingw ์„ค์น˜์˜ /bin/echo์ผ ์ˆ˜ ์žˆ์Œ, ํ™•์‹คํ•˜์ง€ ์•Š์Œ)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ํ˜ธ์ŠคํŒ… ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋ฌธ์ œ๊ฐ€ ์ •ํ™•ํžˆ ์–ด๋–ค ํŒŒ์ผ ์†์„ฑ์ด ๊ทธ๋Ÿฐ ์ข…๋ฅ˜์˜ ์›๊ฒฉ ๋ณต์‚ฌ๋ณธ์— ์˜ํ•ด ์—…๋ฐ์ดํŠธ๋˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธ๋˜์ง€ ์•Š๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@gulbanana ๋ช…ํ™•ํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด power shell copy-item commandlet์ด ์•„๋‹Œ dos copy ๋ช…๋ น์œผ๋กœ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ์ผ๋ฐ˜ ๋„์Šค ์นดํ”ผ๋ฅผ ์‹œ๋„ํ•˜์ง€ ์•Š์•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ, ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•œ .net ๊ธฐ๋ฐ˜ ์•ฑ์ด ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.

powershell์— ๋ณ„์นญ์ด ์—†์œผ๋ฉด dos copy์˜€์Šต๋‹ˆ๋‹ค.

ํ•„์ž์˜ ๊ฒฝ์šฐ PowerShell ๋ณต์‚ฌ๋ณธ์€ dotnet.exe ํ”„๋กœ์„ธ์Šค๋ฅผ ์ข…๋ฃŒํ•˜์ง€ ์•Š์ง€๋งŒ Out-Content์˜ ๋ณ„์นญ์ธ echo๋Š” ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. .NET ๋ฌธ์ œ๋Š” ์•„๋‹Œ ๊ฒƒ ๊ฐ™์ง€๋งŒ ๋„คํŠธ์›Œํฌ ๋ณต์‚ฌ๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ์ด์œ ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด์‹ญ์‹œ์˜ค.

aspnetcore.dll(ANCM) ๋ณ€๊ฒฝ ์•Œ๋ฆผ์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š”์ง€ ์กฐ์‚ฌํ–ˆ์ง€๋งŒ powershell cmdlet ๋˜๋Š” DOS ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ app_offline.htm์„ ์ˆ˜๋™์œผ๋กœ ์‚ญ์ œํ•˜๋ ค๊ณ  ํ•˜๋ฉด ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ธฐ์„œ ๋…ผ์˜๋˜์ง€ ์•Š์€ ํ•œ ๊ฐ€์ง€ ๋ˆ„๋ฝ๋œ ์ ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๊ฒƒ์€ ๋‹จ๊ณ„์  ์ข…๋ฃŒ์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. HttpPlatformHandler"์™€ ๋‹ฌ๋ฆฌ ANCM์€ ๋‹จ๊ณ„์  ์ข…๋ฃŒ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, app_offline.htm์ด ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ์— ์‚ญ์ œ๋˜๋ฉด ANCM์€ Crtrl-C/Break ์‹ ํ˜ธ๋ฅผ ๋ฐฑ์—”๋“œ ํ”„๋กœ์„ธ์Šค์— ๋ณด๋‚ด๊ณ  ๋‹จ๊ณ„์  ์ข…๋ฃŒ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ๊นŒ์ง€ 10์ดˆ๋ฅผ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.
10์ดˆ๊ฐ€ ๊ธฐ๋ณธ๊ฐ’์ด๋ฉฐ ์‚ฌ์šฉ์ž๋Š” ANCM ๊ตฌ์„ฑ ์„ค์ •์˜ shutdownTimeLimit์œผ๋กœ ๊ฐ’์„ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐฑ์—”๋“œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ตฌ์„ฑ๋œ shutdownTimeLimit์—์„œ ์ข…๋ฃŒ๋˜์ง€ ์•Š์œผ๋ฉด ANCM์€ ๋ฐฑ์—”๋“œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ข…๋ฃŒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

MSDeploy ๊ฒŒ์‹œ๊ฐ€ ANCM ์ •์ƒ ์ข…๋ฃŒ์™€ ์–ด๋–ป๊ฒŒ ๊ด€๋ จ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋™์•ˆ ๋งˆ์นจ๋‚ด ์ข…๋ฃŒ ์‹œ๊ฐ„(5์ดˆ)์„ ๋Š˜๋ฆฌ๋Š” ์ผ๊ด€๋œ ์žฌํ˜„ ๋‹จ๊ณ„๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ์ •์ƒ์ ์ธ ์ข…๋ฃŒ ์‹œ๊ฐ„์„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

@vijayrkn
aspnetcore ์›น ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์‹œ์ž‘ํ•˜๊ณ  ์ข…๋ฃŒํ•˜๋Š” ์œ„์น˜์— 5์ดˆ ์ง€์—ฐ์„ ๋„ฃ์€ ํ›„ ์ด ๋ฌธ์ œ์—์„œ ๋ณด๊ณ ๋œ ๋™์ผํ•œ ์˜ค๋ฅ˜๋ฅผ aspnetcore ์›น ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๋กœ์ปฌ IIS ์„œ๋ฒ„์— ๊ฒŒ์‹œํ•˜๋Š” ๋‘ ๋ฒˆ์งธ ์‹œ๋„์—์„œ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•œ ๊ฒŒ์‹œ ํ”„๋กœํ•„๋„ ์•„๋ž˜์— ์ฒจ๋ถ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
์™œ ์ด๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ•˜๋Š”์ง€ ์„ค๋ช…ํ•˜๊ณ  ์ด ๊ฒŒ์‹œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์˜ฌ๋ฐ”๋ฅธ ์ง€์นจ์„ ์ œ๊ณตํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ฆฌ๊ณ  ํŒ€์ด ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์ด ๋ฌธ์ œ๋ฅผ ์ถ”์ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋ณ„๋„๋กœ ์ƒˆ ๋ฌธ์ œ๋ฅผ ๋งŒ๋“œ์‹ญ์‹œ์˜ค.

... <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <EnableMSDeployAppOffline>True</EnableMSDeployAppOffline> <WebPublishMethod>MSDeploy</WebPublishMethod> ...

MSDeploy๋Š” app_offline์ด ์‚ญ์ œ๋œ ์งํ›„์— ๋ฐฐํฌ๋ฅผ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค ์ค‘์ง€๊ฐ€ ์ง€์—ฐ๋˜๋ฉด ๋ฐฐํฌ๊ฐ€ ์‹คํŒจํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด msbuild ์†์„ฑ(https://github.com/aspnet/websdk/blob/dev/src/Publish/Microsoft.NET.Sdk.Publish.Targets/netstandard1.0/PublishTargets/Microsoft)์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐํฌ์— ๋Œ€ํ•œ ์žฌ์‹œ๋„ ํšŸ์ˆ˜๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. .NET.Sdk.Publish.MSDeploy.targets#L67)

์˜ˆ๋ฅผ ๋“ค์–ด ์ด ์†์„ฑ์„ 10์œผ๋กœ ์„ค์ •ํ•˜๋ฉด msdeploy๊ฐ€ ๊ทธ ์‚ฌ์ด์— 1์ดˆ ์ง€์—ฐ์„ ๋‘๊ณ  10๋ฒˆ ์žฌ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.
<RetryAttemptsForDeployment>10</RetryAttemptsForDeployment>

@vijayrkn

์ •๋ณด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜ ๋‘ ์ค„์„ ์ถ”๊ฐ€ํ•œ ํ›„ ๋™์ผํ•œ ์žฌํ˜„ ํ™˜๊ฒฝ์—์„œ ๋ฌธ์ œ๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
<EnableMSDeployAppOffline>True</EnableMSDeployAppOffline> <RetryAttemptsForDeployment>10</RetryAttemptsForDeployment>

๋”ฐ๋ผ์„œ ์œ ์‚ฌํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์‚ฌ๋žŒ์€ ์ ์ ˆํ•œ ๊ฐ’์œผ๋กœ RetryAttemptsForDeployment ์ˆ˜๋ฅผ ๋Š˜๋ฆฌ๊ณ  ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ ๋‹ค์‹œ ์‹œ๋„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ : EnableMSDeployAppOffline์„ ์ถ”๊ฐ€ํ•œ ์ด์œ ๋Š” ๋กœ์ปฌ IIS ์„œ๋ฒ„๋ฅผ aspnetcore ์›น ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๊ฒŒ์‹œ ๋Œ€์ƒ์œผ๋กœ ์‚ฌ์šฉํ•  ๋•Œ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋น„ํ™œ์„ฑํ™”๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ™˜๊ฒฝ์—์„œ ํ™œ์„ฑํ™”๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€๊ฐ€ ํ™•์‹คํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ํ–‰๋„ ์ถ”๊ฐ€ํ•˜๋ฉด ๋˜๋ฏ€๋กœ ์ •๋ณด๋ฅผ ์œ„ํ•ด ์—ฌ๊ธฐ์— ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์ตœ๊ทผ์˜ ๋…ผ์˜๋กœ ์ธํ•ด ์›๋ž˜ ๋ฌธ์ œ๊ฐ€ ์†์‹ค๋˜์ง€ ์•Š๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ์šฐ๋ฆฌ ํŒ€์—์„œ ๊ฒฝํ—˜ํ•œ ๋ฌธ์ œ๋Š” ๊ฐ€์žฅ ํ™•์‹คํžˆ ํƒ€์ด๋ฐ ๋ฌธ์ œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” Powershell, Fake ๋ฐ "Nomad"๋ผ๋Š” .Net ๊ธฐ๋ฐ˜ ํŒŒ์ผ ํƒ์ƒ‰๊ธฐ๋ฅผ ํ†ตํ•ด app_offline.htm ํŒŒ์ผ์„ ์ˆ˜๋™์œผ๋กœ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์„ ํ…Œ์ŠคํŠธํ–ˆ์œผ๋ฉฐ ์–ผ๋งˆ๋‚˜ ์˜ค๋ž˜ ๊ธฐ๋‹ค๋ฆฌ๋”๋ผ๋„ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŒŒ์ผ ํƒ์ƒ‰๊ธฐ, DOS ๋ฐฐ์น˜ ํŒŒ์ผ ๋˜๋Š” bash ์Šคํฌ๋ฆฝํŠธ(์˜ˆ: ๋น„ .Net ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ธฐ๋ฐ˜ ํ”„๋กœ์„ธ์Šค)๋ฅผ ํ†ตํ•ด ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๋ฉด ํ”„๋กœ์„ธ์Šค๊ฐ€ 1-2์ดˆ ์ด๋‚ด์— ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋‹ค์Œ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. ๋ฌธ์ œ๋Š” ๋„คํŠธ์›Œํฌ์™€ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค(๋ชจ๋“  ํ…Œ์ŠคํŠธ๋Š” ์›๊ฒฉ ํŒŒ์ผ ๊ณต์œ ์— ๋Œ€ํ•ด ์ˆ˜ํ–‰๋จ).
  2. ์ •์ƒ์ ์ธ ์ข…๋ฃŒ/ํƒ€์ด๋ฐ ๋ฌธ์ œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

app_offline.htm ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๋Š” .Net์ด ์•„๋‹Œ 3๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ํ”„๋กœ์„ธ์Šค๋ฅผ ์•ˆ์ •์ ์ด๊ณ  ์‹ ์†ํ•˜๊ฒŒ ์ข…๋ฃŒํ•˜๊ณ  ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๋Š” 3๊ฐ€์ง€ .Net-library ๊ธฐ๋ฐ˜ ๋ฐฉ๋ฒ•์ด ํ…Œ์ŠคํŠธ์—์„œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ข…๋ฃŒํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ์ดˆ๋ž˜ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์‚ฌ์‹ค์€ ์‹ค์ œ๋กœ , ๋‚˜์—๊ฒŒ ์ •๋ง ํฐ ์ง€ํ‘œ.

@derekgreer
"๋…ธ๋งˆ๋“œ"์—์„œ๋„ ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
๋‹ค์Œ์€ Windows 10(amd64) ์ปดํ“จํ„ฐ์—์„œ ์ˆ˜ํ–‰ํ•œ ์ž‘์—…์ž…๋‹ˆ๋‹ค.

  1. IIS ์„ค์น˜
  2. ๋น„์ฃผ์–ผ ์ŠคํŠœ๋””์˜ค 2017 ์„ค์น˜
  3. AspnetCore ์›น ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค๊ณ  MSDeploy๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ์ปฌ IIS ์„œ๋ฒ„์— ๋ฐฐํฌ
  4. Nomad v3.2.0.2890 ์„ค์น˜ (http://www.nomad-net.info/downloads)
  5. ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์š”์ฒญ ๋ณด๋‚ด๊ธฐ
  6. ์ž‘์—… ๊ด€๋ฆฌ์ž๋ฅผ ์—ด๊ณ  dotnet.exe ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰ ์ค‘์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  7. Nomad๋ฅผ ์—ด๊ณ  ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฃจํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ์— app_offline.htm์ด๋ผ๋Š” ์ƒˆ ํŒŒ์ผ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  8. ์ž‘์—… ๊ด€๋ฆฌ์ž๋ฅผ ํ™•์ธํ•˜๊ณ  app_offline.htm ํŒŒ์ผ์ด ์ƒ์„ฑ๋  ๋•Œ dotnet.exe ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‚ฌ๋ผ์กŒ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ๋”ฐ๋ฅผ ์ˆ˜ ์žˆ๋„๋ก ์ •ํ™•ํ•œ ์žฌํ˜„ ๋‹จ๊ณ„๋ฅผ ์•Œ๋ ค์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

.Net Core ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹ค์ œ๋กœ ASP.Net Core ์–ด์…ˆ๋ธ”๋ฆฌ๋ฅผ ์ฐธ์กฐํ•˜๋Š” VS 2015์—์„œ ์ƒ์„ฑ๋œ ํ‘œ์ค€ .Net 4.5.2 ์ฝ˜์†” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋ผ๋Š” ์‚ฌ์‹ค์„ ์ œ์™ธํ•˜๊ณ ๋Š” ์ฐจ์ด๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์ ํŠธ๋Š” ์ด์ œ ์•ฝ 1๋…„์ด ๋˜์—ˆ๊ณ  .Net ํ”„๋ ˆ์ž„์›Œํฌ ํ…œํ”Œ๋ฆฟ ํ”„๋กœ์ ํŠธ ์œ ํ˜•์—์„œ ์ฝ”์–ด ํ…œํ”Œ๋ฆฟ ํ”„๋กœ์ ํŠธ ์œ ํ˜•์„ ์ฐธ์กฐํ•˜๋Š” ๋ฐ ์ œํ•œ์ด ์žˆ๊ณ  .Net ์ฝ”์–ด์— ๋Œ€ํ•œ ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ํ…Œ์ŠคํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ง€์›์œผ๋กœ ์ธํ•ด ๋‹น์‹œ์— ๊ทธ๋ ‡๊ฒŒ ์„ค์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ๋ฅผ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. 1) app_offline.htm ํŒŒ์ผ ์‚ญ์ œ(์ผ๋ถ€ ๋„๊ตฌ ์‚ฌ์šฉ)๋Š” ๋•Œ๋•Œ๋กœ ANCM์— ์˜ํ•ด ํ•„ํ„ฐ๋ง๋œ ํŒŒ์ผ ์†์„ฑ ๋ณ€๊ฒฝ ์•Œ๋ฆผ๋งŒ ํŠธ๋ฆฌ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค. 2) ANCM์€ app_offline.htm์ด ํŒŒ์ผ ๋ณต์‚ฌ ๋„๊ตฌ์— ์˜ํ•ด ๋ณด๋ฅ˜๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— app_offline.htm์„ ์ฝ์ง€ ๋ชปํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 3) ์ •์ƒ์ ์ธ ์ข…๋ฃŒ๋กœ ์ธํ•ด ๋ฐฑ์—”๋“œ ํ”„๋กœ์„ธ์Šค ์ข…๋ฃŒ๊ฐ€ ์ง€์—ฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
๋‹ค์Œ ๋ฆด๋ฆฌ์Šค์—์„œ ์ฒ˜์Œ ๋‘ ๊ฐ€์ง€ ๋ฌธ์ œ๋ฅผ ๋‹ค๋ฃฐ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ •์ƒ์ ์ธ ์ข…๋ฃŒ์˜ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค์‹œ ์‹œ๋„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ข‹์€ ์†Œ๋ฆฌ. ๋‚ด ๊ฒฝ์šฐ๋Š” ํ™•์‹คํžˆ ์šฐ์•„ํ•œ ์ข…๋ฃŒ ์‹œ๊ฐ„ ์ดˆ๊ณผ์— ๊ด€ํ•œ ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ค‘์ง€๋˜๋ฉด ์ฆ‰์‹œ ์ค‘์ง€๋ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?
VSTS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Azure Web App ์Šฌ๋กฏ์— ASP.NET Core 1.1 ์•ฑ์„ ๋ฐฐํฌํ•˜๋Š” ๋™์•ˆ ๊ฐ€์ ธ์˜ค๊ธฐ

  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค์ •์— MSDEPLOY_RENAME_LOCKED_FILES=1 ๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • App Service ์ž‘์—… ๊ด€๋ฆฌ๊ฐ€ ์•ฑ์„ ์˜คํ”„๋ผ์ธ์œผ๋กœ ์ „ํ™˜ํ•˜๋„๋ก ๊ตฌ์„ฑ๋จ
  • App Service ๋ฐฐํฌ ์ž‘์—…์€ _was_ ์•ฑ์„ ์˜คํ”„๋ผ์ธ์œผ๋กœ ์ „ํ™˜ํ•˜๋„๋ก ๊ตฌ์„ฑ๋˜์—ˆ์ง€๋งŒ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

ํ•ต์‹ฌ ๋ฌธ์ œ๋Š” DLL์ด ์‚ฌ์šฉ ์ค‘์ด๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Error Message

@ChuckkNorris ์— ๋Œ€ํ•œ ์ตœ์‹  ์ •๋ณด๋Š” https://github.com/Microsoft/vsts-tasks/issues/1607 ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

@davidebbo ๋‹ต๋ณ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค, David. ๋‚˜๋Š” ๊ทธ ์Šค๋ ˆ๋“œ๋ฅผ ๋ณด์•˜๊ณ  ๋‚ด๊ฐ€ ์‹œ๋„ํ•œ ๋งŽ์€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” ์•„์ง ๋ฏธํ•ด๊ฒฐ ์ƒํƒœ์ด๊ณ  ์˜ค๋ฅ˜๊ฐ€ ์—ฌ์ „ํžˆ ๋„๋ฆฌ ํผ์ ธ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์•„๋‹ˆ๋ผ ๊ณง ์ˆ˜์ • ์‚ฌํ•ญ์ด ์žˆ์„ ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ๊ฒฐ๊ตญ 2๋…„ ๋„˜๊ฒŒ ๊ณต๊ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

@ChuckkNorris ์ฆ์ƒ์€ ๋™์ผํ•˜์ง€๋งŒ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

  • app_offline.htm ๋Œ€์†Œ๋ฌธ์ž์™€ ๊ด€๋ จ๋œ ์›๋ž˜ ๋ฌธ์ œ๋กœ ์ธํ•ด ์™„์ „ํžˆ ๋ฌด์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์ž ์‹œ ๋™์•ˆ ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์ด ์ƒˆ๋กœ์šด ๋ฌธ์ œ๋Š” ๋ถˆ๊ณผ ์ผ์ฃผ์ผ ์ „์— ์‹œ์ž‘๋˜์—ˆ์œผ๋ฉฐ app_offline.htm ๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ Core๊ฐ€ ์ข…๋ฃŒ๋˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ๋” ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๊ณ  ๊ธฐ๋ณธ์ ์œผ๋กœ msdeploy๊ฐ€ ์ถฉ๋ถ„ํžˆ ์˜ค๋ž˜ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ์žฌ์‹œ๋„ ํšŸ์ˆ˜๋ฅผ ๋Š˜๋ฆฌ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ฐฉ๊ธˆ VS 2017์„ 15.3์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜๊ณ  .NET core 2.0 SDK๋ฅผ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค. VS์—์„œ ๊ฐ„๋‹จํ•œ MVC ์•ฑ์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. netcoreapp1.1์„ ๋Œ€์ƒ์œผ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค. Azure์— ๊ฒŒ์‹œํ–ˆ๋Š”๋ฐ ๋ชจ๋“  ๊ฒƒ์ด ์ •์ƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. newcoreapp2.0์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•œ ๋‹ค์Œ ๋ชจ๋“  ๋„ˆ๊ฒŸ ํŒจํ‚ค์ง€๋ฅผ 2.0(Microsoft.AspNetCore, Microsoft.AspNetCore.Mvc ๋“ฑ)์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ–ˆ์Šต๋‹ˆ๋‹ค.

image

Azure์— ๊ฒŒ์‹œํ•˜๋ ค๊ณ  ํ•  ๋•Œ(์ฆ‰, 1.1 ๋ฎ์–ด์“ฐ๊ธฐ) ๋‹ค์Œ ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

Error : Web deployment task failed. (Web Deploy cannot modify the file 'Microsoft.ApplicationInsights.AspNetCore.dll' on the destination because it is locked by an external process. In order to allow the publish operation to succeed, you may need to either restart your application to release the lock, or use the AppOffline rule handler for .Net applications on your next publish attempt. Learn more at: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_FILE_IN_USE.)

@DaveSlinn ์€ https://github.com/Azure/app-service-announcements/issues/24 ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋‚ด 2.0 ์•ฑ์ด git์„ ํ†ตํ•ด ๋ฐฐํฌ๋˜๊ณ  ํŒŒ์ผ ์‚ฌ์šฉ ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด MvcViewComplication์„ ๋น„ํ™œ์„ฑํ™”ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

https://github.com/Microsoft/vsts-tasks/issues/5259
https://github.com/Microsoft/vsts-tasks/issues/1607#issuecomment -349115532
@davidebbo , ์ด ๋ฌธ์ œ๋ฅผ ์ข…๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
์›น ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ์žฌ์‹œ๋„ ๋„์šฐ๋ฏธ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์ด ๋ฌธ์ œ๋Š” ์ง€์†๋ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ FTP ํผ๋ธ”๋ฆฌ์‹ฑ์—๋„ ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค๋Š” ๋ช…๋ฐฑํ•œ ์‚ฌ์‹ค์„ ์ง€์ ํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.

@jeremycook FTP๋Š” App_Offline ์‚ฌ์šฉ์„ ์œ„ํ•œ ์ž๋™ํ™”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์•ฝ๊ฐ„ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค๋ฅผ ์ข…๋ฃŒํ•˜๋ ค๋ฉด ํ•ด๋‹น ํŒŒ์ผ์„ ์ˆ˜๋™์œผ๋กœ ์ƒ์„ฑํ•ด์•ผ ํ•˜๋ฉฐ, ๊ทธ ํ›„์— ํŒŒ์ผ์„ ๋ณต์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@davidebbo ๋Š” ์ถฉ๋ถ„ํžˆ ๊ณต์ •ํ•˜์ง€๋งŒ Visual Studio์˜ ๊ฒŒ์‹œ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ FTP๋ฅผ ํ†ตํ•ด ๊ฒŒ์‹œํ•˜๋ฉด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๋‚ด๊ฐ€ ์ž˜๋ชป๋œ ์œ„์น˜์— ๊ฒŒ์‹œํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

@jeremycook ์†”์งํžˆ FTP ๋ฐฐํฌ๋ฅผ ํ•  ๋•Œ VS๊ฐ€ ๋ฌด์—‡์„ ํ•˜๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๋น›์„ ๋ฐœํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ ASP.NET๋ณด๋‹ค VS ์งˆ๋ฌธ์— ๋” ๊ฐ€๊น์Šต๋‹ˆ๋‹ค.

๋ถ„๋ฆฌํ•˜๊ธฐ๋Š” ํ•˜์ง€๋งŒ App_Offline.html์„ ์ˆ˜๋™์œผ๋กœ ๋งŒ๋“  ๋‹ค์Œ VS์—์„œ FTP ๊ฒŒ์‹œํ•˜๋ฉด ๋ฐฐํฌ๊ฐ€ ์„ฑ๊ณต์ ์ธ์ง€ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ์ด ํฅ๋ฏธ๋กœ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@vijayrkn FTP ๋ฐฐํฌ ์ค‘ VS ๋™์ž‘์— ๋Œ€ํ•ด ์–ธ๊ธ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

VS์—์„œ App Service๋กœ์˜ FTP ๊ฒŒ์‹œ๋Š” App_Offline์„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@vijayrkn ok, ๊ทธ๋ž˜์„œ ์‹ค์šฉ์ ์ธ ๋ชฉ์ ์„ ์œ„ํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐฐํฌ ์ „์— ์‚ฌ์ดํŠธ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์ค‘์ง€ํ•˜์ง€ ์•Š๋Š” ํ•œ FTP๋ฅผ ํ†ตํ•œ .NET Core ๋ฐฐํฌ๋Š” ์ง€์›๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋ฅธ์ชฝ?

@davidebbo - ๋„ค, ๋งž์Šต๋‹ˆ๋‹ค.

IIS ์›น ๋ฐฐํฌ ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•˜์—ฌ VSTS ๋ฆด๋ฆฌ์Šค์—์„œ IIS๋กœ asp.net ์ฝ”์–ด 2.0 ์›น ์•ฑ์„ ๋ฐฐํฌํ•  ๋•Œ ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ ์ค‘์ธ ํŒŒ์ผ๋กœ ์ธํ•ด ์‚ญ์ œ์— ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค. ์•ฑ ์˜คํ”„๋ผ์ธ ์˜ต์…˜์ด ํ™œ์„ฑํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

@davidebbo @vijayrkn @shirhatti ์ด ๋ชจ๋“  ๊ฒƒ์ด ์•ฝ๊ฐ„ ์šฐ์šธํ•ฉ๋‹ˆ๋‹ค. FTP/XCOPY๋ฅผ ์ž‘๋™์‹œํ‚ฌ ๊ณ„ํš์ด ์žˆ์Šต๋‹ˆ๊นŒ? FTP/XCOPY/ROBOCOPY/๋“ฑ์„ ํ†ตํ•ด ๊ตฌ์‹ ๋ฐฉ์‹์„ ๋ฐฐํฌํ•˜๋Š” ๋ฐ ์ค‘์ ์„ ๋‘” ์ƒˆ๋กœ์šด ๋ฌธ์ œ๋ฅผ ์—ด์–ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

์ €๋Š” ์ด ํŒŒํ‹ฐ์— ๋Šฆ์—ˆ์ง€๋งŒ ๋ณด๊ณ ํ•˜๊ณ  ์‹ถ์€ ๋ช‡ ๊ฐ€์ง€ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
VS 2017 ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ
asp.net 4.6.xx
์„œ๋ฒ„๋Š” ์„œ๋ฒ„ 2012 R2์˜ IIS 8.5์ž…๋‹ˆ๋‹ค.
SQL ์„œ๋ฒ„ ์œ ํ˜• dll์ด ์ž ๊ฒจ ์žˆ๊ณ  ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๊ฐ€ msdeploy๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒŒ์‹œ๋ฅผ ์ˆ˜ํ–‰ํ•  ๋•Œ ์ด๋Ÿฌํ•œ ์ž ๊ธˆ์ด ๋ฐœ์ƒํ•˜์—ฌ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ์ด์ œ ๋ฐฐํฌ์˜ ์ผ๋ถ€๋งŒ ์‹คํ–‰๋˜์–ด ์›น ์‚ฌ์ดํŠธ๊ฐ€ ์†์ƒ๋ฉ๋‹ˆ๋‹ค.

SQL ์œ ํ˜• dll์€ ์•ฑ bin ํด๋”์—๋งŒ ์ž ๊ฒจ ์žˆ์Šต๋‹ˆ๋‹ค.
dll ํŒŒ์ผ์˜ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•œ ๋‹ค์Œ ๊ฒŒ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
SQL ์œ ํ˜• ํŒจํ‚ค์ง•์—๋Š” ๊ด€๋ฆฌ๋˜์ง€ ์•Š๋Š” dll์„ ๋กœ๋“œํ•˜๊ธฐ ์œ„ํ•œ ์ฝ”๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
์ž ๊ทธ์ง€ ์•Š๋„๋ก ๋ณ€๊ฒฝํ•ด์•ผ ํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด.

์‚ฌ๋žŒ๋“ค์ด ์‚ฌ์ดํŠธ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ ์˜คํ”„๋ผ์ธ์œผ๋กœ ์ „ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๋Š” ๊ฒƒ์„ ๋ณด์•˜์ง€๋งŒ msdeploy์—์„œ ์ด์— ๋Œ€ํ•œ ์„ค์ •์„ ์ฐพ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋ณธ xml์€ ๋‚ด ํŒŒ์ผ์— ์—†์Šต๋‹ˆ๋‹ค.

Microsoft์—์„œ ๊ฒŒ์‹œํ•˜๋Š” sql types ํŒจํ‚ค์ง€์— ๋” ๋‚˜์€ ์ง€์นจ์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด ๋ฌธ์ œ์™€ ๋” ์ง์ ‘์ ์ธ ๊ด€๋ จ์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์•„์„œ ์ด ๋ฌธ์ œ์— ๊ฒŒ์‹œํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋˜ํ•œ VSTS์— ๋Œ€ํ•œ ๊ฒƒ์ด์ง€๋งŒ ๋™์ผํ•œ ์ฃผ์ œ์— ๋Œ€ํ•ด ์•„๋ž˜ ๋ฌธ์ œ๋ฅผ ๋”ฐ๋ž์Šต๋‹ˆ๋‹ค. Visual Studio์—์„œ ์ง์ ‘ ํผ๋ธ”๋ฆฌ์‹ฑํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

https://github.com/Microsoft/vsts-tasks/issues/5259#issuecomment -350940342

์ด๊ฒƒ์€ ์ €์—๊ฒŒ ์˜จ/์˜คํ”„ ๋ฌธ์ œ์˜€์ง€๋งŒ ์ตœ๊ทผ์— ๊ฐ•์ œ๋กœ ๋ฐ˜ํ™˜๋˜์—ˆ์œผ๋ฉฐ ์ œ ์•ฑ ์„œ๋น„์Šค ์‚ฌ์ดํŠธ ์ค‘ ํ•˜๋‚˜์—์„œ ๊ฑฐ์˜ ๋ชจ๋“  ๊ฒŒ์‹œ ์‹œ๋„์—์„œ ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด ์‚ฌ์ดํŠธ๋Š” '๊ธฐ๋ณธ' ์ˆ˜์ค€ ์„œ๋น„์Šค์—์„œ ํ˜ธ์ŠคํŒ…๋˜๋ฏ€๋กœ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค๋ฅธ ์•ฑ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์Šฌ๋กฏ์ด ์—†์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ .net core 2 mvc ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ•œ ๊ฐ€์ง€ ์ƒ๊ฐ: ์›น ์•ฑ์˜ ์ผ๋ถ€์ธ ์ผ๋ถ€ ํŒŒ์ผ์€ ๋ชจ๋“  ๊ฒŒ์‹œ(์˜ˆ: sql ์œ ํ˜•)์—์„œ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ms deploy๋Š” ๋ชจ๋“  ๋ฐฐํฌ์—์„œ ์ด๋ฅผ ๋Œ€์ฒดํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
๋ณ€๊ฒฝ๋˜์ง€ ์•Š์€ ํŒŒ์ผ์„ ๋‹ค์‹œ ๋ณต์‚ฌํ•˜์ง€ ์•Š๊ณ  ์—…๋ฐ์ดํŠธ๋ฅผ ๋” ์ž‘๊ณ  ๋น ๋ฅด๊ฒŒ ๋งŒ๋“ค๊ณ  ํŒŒ์ผ ์ž ๊ธˆ์„ ์—‰๋ง์œผ๋กœ ๋งŒ๋“ค ํ•„์š”๊ฐ€ ์—†๋„๋ก ์–ด๋–ค ์ข…๋ฅ˜์˜ ๊ฒ€์‚ฌ๊ฐ€ ๋ฐœ์ƒํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ด์ ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ํŒŒ์ผ์„ ์ž ๊ทธ๋Š” ํ•ญ๋ชฉ๊ณผ ์ž ๊ธˆ์„ ํ•ด์ œํ•˜๋Š” ์ด์œ  ๋ฐ ๋ฐฉ๋ฒ•์„ ๋” ์ž˜ ์‹๋ณ„ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
ํ‘œ์ค€ ๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ์˜ ์ผ๋ถ€๋กœ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

@figuerres ์ €๋Š” ์ง€๊ธˆ ๋ช‡ ๋‹ฌ ๋™์•ˆ ๊ทธ ๋ฌธ์ œ๋ฅผ ๋‹ค๋ฃจ๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ์ž ๊ธˆ ๋ฌธ์ œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์„€๋„ โ€‹โ€‹๋ณต์‚ฌ๋กœ ์ธํ•ด ๋ฐฉ์ง€๋˜์ง€๋งŒ ~/bin ์—์„œ ํ•ด๋‹น ๋„ค์ดํ‹ฐ๋ธŒ DLL์„ ๋กœ๋“œํ•˜๋ฉด ์ž ๊ธˆ ๋ฌธ์ œ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ž ์žฌ์ ์ธ ์†”๋ฃจ์…˜์ด ์žˆ์ง€๋งŒ ์™„์ „ํžˆ ์•ˆ์ „ํ•œ ์†”๋ฃจ์…˜์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. https://stackoverflow.com/questions/47796553/is-it-safe-to-manually-copy-native-dlls-to- ๊ทธ๋ฆผ์ž ๋ณต์‚ฌ ๋””๋ ‰ํ„ฐ๋ฆฌ

NuGet ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ ์„ค๋ช…์„œ๊ฐ€ ์ž ๊ธˆ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค์ง€ ์•Š๋Š” ๋” ๋‚˜์€ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ด์•ผ ํ•œ๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

@figuerres ์ฐธ๊ณ ๋กœ ์œ„์˜ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ์— ๋Œ€ํ•œ ์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ ์งˆ๋ฌธ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ž‘์—… ๊ด€๋ฆฌ์ž์—์„œ dotnet.exe ์ข…๋ฃŒ

์—ฌ๊ธฐ ์ƒํƒœ๊ฐ€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ? 3๋…„์ด ์ง€๋‚ฌ์ง€๋งŒ ์•„์ง ๊ณ ์ณ์ง€์ง€ ์•Š์•˜๋‹ค. ์ˆ˜๋™์œผ๋กœ ์„œ๋ฒ„๋กœ ์ด๋™ํ•˜์—ฌ ์›น ์‚ฌ์ดํŠธ๋ฅผ ์ค‘์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

3 ๋…„? ์ด ๋ฌธ์ œ๋Š” 2017๋…„ 8์›”์— ๋ณด๊ณ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ข‹์•„์š” 1๊ฐœ๊ฐ€ ๊บผ์กŒ์Šต๋‹ˆ๋‹ค.
2018๋…„ 4์›” 23์ผ ์›”์š”์ผ ์˜คํ›„ 8:56 Oliver Janik [email protected]
์ผ๋‹ค:

์—ฌ๊ธฐ ์ƒํƒœ๊ฐ€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ? 3๋…„์ด ์ง€๋‚ฌ์ง€๋งŒ ์•„์ง ๊ณ ์ณ์ง€์ง€ ์•Š์•˜๋‹ค. ์ˆ˜๋™์œผ๋กœ ๊ฐ€์•ผํ•ด์š”
์„œ๋ฒ„์— ์—ฐ๊ฒฐํ•˜๊ณ  ์›น์‚ฌ์ดํŠธ๋ฅผ ์ค‘์ง€ํ•ฉ๋‹ˆ๋‹ค.

โ€”
์ด ์Šค๋ ˆ๋“œ์— ๊ฐ€์ž…ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/aspnet/Home/issues/694#issuecomment-383768450 ๋˜๋Š” ์Œ์†Œ๊ฑฐ
์Šค๋ ˆ๋“œ
https://github.com/notifications/unsubscribe-auth/AAXhfrhOTvZn2qb4kU-Y1Kg9I-IQKD9yks5trnhXgaJpZM4FJp_R
.

์ฒซ ๋ฒˆ์งธ ๊ฒŒ์‹œ๋ฌผ์—๋Š” "pekkah๊ฐ€ 2015๋…„ 6์›” 23์ผ์— ์ด ํ˜ธ๋ฅผ ์—ด์—ˆ์Šต๋‹ˆ๋‹ค"๋ผ๊ณ  ๋‚˜์™€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋„ค๊ฐ€ ์˜ณ์•„. ๋‚ด ์ž˜๋ชป. ์ด๋ฉ”์ผ ์ฒด์ธ์˜ ๋งˆ์ง€๋ง‰ ํƒ€์ž„์Šคํƒฌํ”„๋งŒ ๋ณด์•˜์Šต๋‹ˆ๋‹ค.
2018๋…„ 4์›” 23์ผ ์›”์š”์ผ ์˜คํ›„ 9:06 Oliver Janik [email protected]
์ผ๋‹ค:

์ฒซ ๋ฒˆ์งธ ๊ฒŒ์‹œ๋ฌผ์—๋Š” "pekkah๊ฐ€ 2015๋…„ 6์›” 23์ผ์— ๋Œ“๊ธ€์„ ๋‚จ๊ฒผ์Šต๋‹ˆ๋‹ค"๋ผ๊ณ  ๋‚˜์™€ ์žˆ์Šต๋‹ˆ๋‹ค.

โ€”
๋‹น์‹ ์ด ๋Œ“๊ธ€์„ ๋‹ฌ์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/aspnet/Home/issues/694#issuecomment-383769982 ๋˜๋Š” ์Œ์†Œ๊ฑฐ
์Šค๋ ˆ๋“œ
https://github.com/notifications/unsubscribe-auth/AAXhfgwYG-jLjnoJF7MCMtzbbfxSZkt2ks5trnqXgaJpZM4FJp_R
.

๐Ÿ˜„ ๋‚ก์•„์„œ ๋‹ซ๋Š”๋‹ค.

@Eilon ์ฃ„์†กํ•˜์ง€๋งŒ ํ์‡„๋œ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์•„์ง ๋ฏธํ•ด๊ฒฐ์ธ๊ฐ€์š”?

๐Ÿ˜„ ๋‚ก์•„์„œ ๋‹ซ๋Š”๋‹ค.

ํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ ๋ฌธ์ œ .. ? (๋น„ Azure ๋ฐฐํฌ์—์„œ๋„)

๊ฐ€์‹œ์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ์ƒˆ ๋ฌธ์ œ(#3719)๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰