c# - 发布具有本地依赖项的基于 dnx 的 WebJob

标签 c# azure azure-webjobs dnx

我正在尝试将基于 DNX 的 WebJob 发布到 Azure。为此,我将 project.json 和 Program.cs 文件添加到某个 ZIP 存档中,并通过 Azure 门户上传。这工作正常,但现在我希望我的 WebJob 项目引用一些其他本地基于 DNX 的项目(只是一个简单的类库)。在这种情况下如何上传?

最佳答案

这是一个有效的示例存储库 https://github.com/ahmelsayed-test/DnxWebJobWithClassLibrary 。克隆它,压缩它,然后上传它。它应该有效!

不幸的是,对 DNX webJob 的支持尚未完成,因此此方案无法开箱即用,您需要一个神奇的 run.cmd ,它位于存储库中,也位于此下方回答。

DNX 的文件夹结构是项目应位于不同的同级文件夹中。因此,如果您查看存储库中的文件夹结构,就会像这样

|   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

关于c# - 发布具有本地依赖项的基于 dnx 的 WebJob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33281884/

相关文章:

c# - 如何从 Azure 函数返回 JSON

c# - 调用 IdentityServer4 生成 System.NullReferenceException : Object reference not set to an instance of an object

c# - 在测试项目中运行所有测试时管理 Application.Current

未创建 Azure 网站自动和手动备份

azure - 如何根据azure databricks中的列值将静态值传递到动态值

运行旧代码的 Azure WebJob

Azure 触发的 Webjob - 检测 webjob 何时停止

c# - 年、月和日中 2 天之间的差异

azure - 如何在DocumentDB中衡量RU?

.net - Azure WebJob 中缺少 dotnet.exe