2016-08-01 4 views
1

Я разрабатываю приложение ASP.NET Core 1.0 с использованием кода Visual Studio, и я не могу/не использовать встроенные инструменты публикации в среде Visual Studio IDE. У меня это работает для ASP.NET 5 RC1 (dnx-clr-win-x86.1.0.0-rc1-update1), но я не знаю, как обновить его до ASP.NET Core 1.0, и инструменты не кажутся обновляться.Скрипт развертывания Kudu для ASP.NET Core 1.0

Для ASP.NET 5 RC1 Я использовал azure-cli package для создания deploy.cmd файл с помощью следующей команды:

azure site deploymentscript --aspNet5 .\server\project.json -p .\server --aspNet5Version "1.0.0-rc1-update1" --aspNet5Runtime clr --aspNet5Architecture x86 

Я получил следующий deploy.cmd файл:

@if "%SCM_TRACE_LEVEL%" NEQ "4" @echo off 

:: ---------------------- 
:: KUDU Deployment Script 
:: Version: 1.0.6 
:: ---------------------- 

:: Prerequisites 
:: ------------- 

:: Verify node.js installed 
where node 2>nul >nul 
IF %ERRORLEVEL% NEQ 0 (
    echo Missing node.js executable, please install node.js, if already installed make sure it can be reached from current environment. 
    goto error 
) 

:: Setup 
:: ----- 

setlocal enabledelayedexpansion 

SET ARTIFACTS=%~dp0%..\artifacts 

IF NOT DEFINED DEPLOYMENT_SOURCE (
    SET DEPLOYMENT_SOURCE=%~dp0%. 
) 

IF NOT DEFINED DEPLOYMENT_TARGET (
    SET DEPLOYMENT_TARGET=%ARTIFACTS%\wwwroot 
) 

IF NOT DEFINED NEXT_MANIFEST_PATH (
    SET NEXT_MANIFEST_PATH=%ARTIFACTS%\manifest 

    IF NOT DEFINED PREVIOUS_MANIFEST_PATH (
    SET PREVIOUS_MANIFEST_PATH=%ARTIFACTS%\manifest 
) 
) 

IF NOT DEFINED KUDU_SYNC_CMD (
    :: Install kudu sync 
    echo Installing Kudu Sync 
    call npm install kudusync -g --silent 
    IF !ERRORLEVEL! NEQ 0 goto error 

    :: Locally just running "kuduSync" would also work 
    SET KUDU_SYNC_CMD=%appdata%\npm\kuduSync.cmd 
) 
IF NOT DEFINED DEPLOYMENT_TEMP (
    SET DEPLOYMENT_TEMP=%temp%\___deployTemp%random% 
    SET CLEAN_LOCAL_DEPLOYMENT_TEMP=true 
) 

IF DEFINED CLEAN_LOCAL_DEPLOYMENT_TEMP (
    IF EXIST "%DEPLOYMENT_TEMP%" rd /s /q "%DEPLOYMENT_TEMP%" 
    mkdir "%DEPLOYMENT_TEMP%" 
) 

IF DEFINED MSBUILD_PATH goto MsbuildPathDefined 
SET MSBUILD_PATH=%ProgramFiles(x86)%\MSBuild\14.0\Bin\MSBuild.exe 
:MsbuildPathDefined 
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
:: Deployment 
:: ---------- 

echo Handling ASP.NET 5 Web Application deployment. 

:: Remove wwwroot if deploying to default location 
IF "%DEPLOYMENT_TARGET%" == "%WEBROOT_PATH%" (
    FOR /F %%i IN ("%DEPLOYMENT_TARGET%") DO IF "%%~nxi"=="wwwroot" (
    SET DEPLOYMENT_TARGET=%%~dpi 
    ) 
) 

:: Remove trailing slash if present 
IF "%DEPLOYMENT_TARGET:~-1%"=="\" (
    SET DEPLOYMENT_TARGET=%DEPLOYMENT_TARGET:~0,-1% 
) 


:: 1. Set DNX Path 
set DNVM_CMD_PATH_FILE="%USERPROFILE%\.dnx\temp-set-envvars.cmd" 
set DNX_RUNTIME="%USERPROFILE%\.dnx\runtimes\dnx-clr-win-x86.1.0.0-rc1-update1" 

:: 2. Install DNX 
call :ExecuteCmd PowerShell -NoProfile -NoLogo -ExecutionPolicy unrestricted -Command "[System.Threading.Thread]::CurrentThread.CurrentCulture = ''; [System.Threading.Thread]::CurrentThread.CurrentUICulture = '';$CmdPathFile='%DNVM_CMD_PATH_FILE%';& '%SCM_DNVM_PS_PATH%' " install 1.0.0-rc1-update1 -arch x86 -r clr %SCM_DNVM_INSTALL_OPTIONS% 
IF !ERRORLEVEL! NEQ 0 goto error 


:: 3. Run DNU Restore 
call %DNX_RUNTIME%\bin\dnu restore "%DEPLOYMENT_SOURCE%" %SCM_DNU_RESTORE_OPTIONS% 
IF !ERRORLEVEL! NEQ 0 goto error 

:: 4. Run DNU Bundle 
call %DNX_RUNTIME%\bin\dnu publish ".\server\project.json" --runtime %DNX_RUNTIME% --out "%DEPLOYMENT_TEMP%" %SCM_DNU_PUBLISH_OPTIONS% 
IF !ERRORLEVEL! NEQ 0 goto error 

:: 5. KuduSync 
call %KUDU_SYNC_CMD% -v 50 -f "%DEPLOYMENT_TEMP%" -t "%DEPLOYMENT_TARGET%" -n "%NEXT_MANIFEST_PATH%" -p "%PREVIOUS_MANIFEST_PATH%" -i ".git;.hg;.deployment;deploy.cmd" 
IF !ERRORLEVEL! NEQ 0 goto error 
) 

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 

:: Post deployment stub 
IF DEFINED POST_DEPLOYMENT_ACTION call "%POST_DEPLOYMENT_ACTION%" 
IF !ERRORLEVEL! NEQ 0 goto error 

goto end 

:: Execute command routine that will echo out when error 
:ExecuteCmd 
setlocal 
set _CMD_=%* 
call %_CMD_% 
if "%ERRORLEVEL%" NEQ "0" echo Failed exitCode=%ERRORLEVEL%, command=%_CMD_% 
exit /b %ERRORLEVEL% 

:error 
endlocal 
echo An error has occurred during web site deployment. 
call :exitSetErrorLevel 
call :exitFromFunction 2>nul 

:exitSetErrorLevel 
exit /b 1 

:exitFromFunction 
() 

:end 
endlocal 
echo Finished successfully. 

Это работает для ASP.NET 5 RC1 (dnx-clr-win-x86.1.0.0-rc1-update1), но как его обновить для ASP.NET Core 1.0? Может ли кто-нибудь указать мне рабочий пример deploy.cmd для ASP.NET Core 1.0?

ответ

5

Лазурный CLI будет обновлен в ближайшее время, но вы можете использовать последнюю версию непосредственно с помощью пакета npm kuduscript. Установите его с помощью:

npm install -g kuduscript 

Вы можете сгенерировать сценарий ASP.NET Core, используя что-то вроде этого (заменить имена в зависимости от обстоятельств):

kuduscript -y --aspNetCore src\AspNetCoreVS\project.json -s AspNetCoreVS.sln 

Или, если у вас нет файла решения, вы можете пропустить то, что генерирует несколько другой скрипт.

Обратите внимание, что в обычных случаях Куду должен разбираться без каких-либо скриптов. Пользовательские скрипты нужны только в более сложных случаях.

+0

Спасибо! Это действительно помогло мне. Я удалил как .deployment, так и deploy.cmd - Куду решил все это сделать для простого тестового репо. Для моего основного проекта у меня было приложение ASP.NET Core в подпапке. В этом случае я указал куду на этот проект, указав «[config] project = server» в пользовательском файле .deployment. – mikeesouth