我试图将基于DNX的WebJob发布到Azure。为此,我将project.json和Program.cs文件添加到一些ZIP-archive并通过Azure门户上传。这工作正常,但现在我希望我的WebJob项目引用一些其他本地基于DNX的项目(只是一个简单的类库)。在这种情况下如何上传?
答案 0 :(得分:6)
这是一个有效的样本仓库https://github.com/ahmelsayed-test/DnxWebJobWithClassLibrary。克隆,压缩,上传。它应该工作!
不幸的是,DNX webJob的支持还没有完成,所以这个场景没有开箱即用,你需要一个魔术run.cmd
在回购中,也是在这个答案下面。
DNX的文件夹结构是项目应位于不同的兄弟文件夹中。所以,如果你看一下repo中的文件夹结构,就像这样
| run.cmd
|
+---ClassLibrary
| Class.cs
| project.json
|
\---ConsoleApp
Program.cs
project.json
run.cmd
中的有一个环境变量DNX_CONSOLE_APP_PATH
,您需要手动将其指向控制台应用的project.json
。在这种情况下,只有kudu中有足够的智慧,它才会ConsoleApp\project.json
你不应该在你的网络工作中拥有这个run.cmd
。如果您查看kudu,它会使用非常相似的runDnxWebJob.cmd
它只是不够智能,无法找到控制台应用程序的正确路径。
@ECHO OFF
:: 1. Prepare environment
SET DNX_CONSOLE_APP_PATH=ConsoleApp\project.json
SET DNVM_CMD_PATH_FILE="%USERPROFILE%\.dnx\temp-set-envvars.cmd"
:: 2. Install DNX
IF EXIST global.json (
CALL 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 -File global.json
IF ERRORLEVEL 1 GOTO ERROR
) ELSE (
CALL 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 latest
IF ERRORLEVEL 1 GOTO ERROR
)
:: 3. Put DNX on the path
IF EXIST %DNVM_CMD_PATH_FILE% (
CALL %DNVM_CMD_PATH_FILE%
DEL %DNVM_CMD_PATH_FILE%
)
:: 4. Run dnu restore
CALL dnu restore
IF ERRORLEVEL 1 GOTO ERROR
:: 5. Run the WebJob
CALL dnx --project "%DNX_CONSOLE_APP_PATH%" run
IF ERRORLEVEL 1 GOTO ERROR
GOTO END
:ERROR
ENDLOCAL
ECHO An error has occurred during running DNX WebJob.
CALL :EXITSETERRORLEVEL
CALL :EXITFROMFUNCTION 2>NUL
:EXITSETERRORLEVEL
EXIT /b 1
:EXITFROMFUNCTION
()
:END
ECHO DNX WebJob ended
答案 1 :(得分:2)
这里WebJobs真的没有什么特别之处。要问的问题是:如果您要从本地计算机上的某个自包含文件夹手动运行此文件,那么您将包含哪些文件?然后,无论这组文件是什么,您都希望压缩在WebJob中使用。