使用本地依赖项发布基于dnx的WebJob
我正在尝试将基于DNX的WebJob发布到Azure。 为此,我将project.json和Program.cs文件添加到一些ZIP-archive并通过Azure门户上传。 这工作正常,但现在我希望我的WebJob项目引用一些其他本地基于DNX的项目(只是一个简单的类库)。 在这种情况下如何上传?
这是一个有效的样本仓库https://github.com/ahmelsayed-test/DnxWebJobWithClassLibrary 。 克隆,压缩,上传。 它应该工作!
不幸的是,对DNX webJob的支持还没有完成,所以这种情况不是开箱即用的,你需要一个魔术run.cmd
,它位于repo中,也在下面的答案中。
DNX的文件夹结构是项目应位于不同的兄弟文件夹中。 所以如果你看一下repo中的文件夹结构,就像这样
| run.cmd | +---ClassLibrary | Class.cs | project.json | \---ConsoleApp Program.cs project.json
在run.cmd
有一个环境变量DNX_CONSOLE_APP_PATH
,您需要手动将其指向控制台应用程序的project.json
。 在这种情况下,一旦在kudu中有足够的run.cmd
,它就是ConsoleApp\project.json
你不需要在你的webjob中拥有这个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
这里WebJobs真的没有什么特别之处。 要问的问题是:如果您要从本地计算机上的某个独立文件夹手动运行,那么您将包含哪些文件? 然后,无论这组文件是什么,您都需要压缩以便在WebJob中使用。
- 使用AzureSearch SDK与30-40 ISearchIndexClients的静态字典的含义
- 如何在Visual Studio 2013中安装WindowsAzure.Storage?
- 自创建数据库以来,支持’–Context’上下文的模型已更改 – 但db是新的生产数据库
- Mongo DB对象Id使用JSON序列化程序进行反序列化
- 计算Azure表存储中分区内的行数
- 如何通过AADvalidationAzure服务管理请求
- 无法加载文件或程序集FSharp.Core,Version = 4.0.0.0 Azure Web Role
- Azure应用服务 – 自定义身份validation – 不允许HTTP动词
- 服务结构中的配置转换?