Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 发布具有本地依赖项的基于dnx的WebJob_C#_Azure_Azure Webjobs_Dnx - Fatal编程技术网

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

C# 发布具有本地依赖项的基于dnx的WebJob,c#,azure,azure-webjobs,dnx,C#,Azure,Azure Webjobs,Dnx,我正在尝试将基于DNX的WebJob发布到Azure。为此,我将project.json和Program.cs文件添加到一些ZIP存档中,并通过Azure门户上传。这很好,但现在我希望我的WebJob项目引用一些其他基于DNX的本地项目,只是一个简单的类库。在这种情况下,如何上传它?这里的WebJobs真的没有什么特别之处。要问的问题是:如果要从本地计算机上的某个自包含文件夹手动运行此操作,您会包括哪些文件集?然后,无论这组文件是什么,您都需要压缩以在您的WebJob中使用。这里的WebJobs

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

这里的WebJobs真的没有什么特别之处。要问的问题是:如果要从本地计算机上的某个自包含文件夹手动运行此操作,您会包括哪些文件集?然后,无论这组文件是什么,您都需要压缩以在您的WebJob中使用。

这里的WebJobs没有什么特别之处。要问的问题是:如果要从本地计算机上的某个自包含文件夹手动运行此操作,您会包括哪些文件集?然后,无论这组文件是什么,您都需要压缩以用于您的WebJob。

这里是一个有效的回购示例。克隆它,压缩它,然后上传它。它应该有用

不幸的是,对DNX webJob的支持还没有完成,所以这个场景不是开箱即用的,您需要一个magic run.cmd,它在repo中,也在下面的答案中

DNX的文件夹结构是,项目应位于不同的同级文件夹中。因此,如果你看一下回购协议中的文件夹结构,它是这样的

|   run.cmd
|
+---ClassLibrary
|       Class.cs
|       project.json
|
\---ConsoleApp
        Program.cs
        project.json
中有一个环境变量DNX_CONSOLE_APP_PATH,您需要手动将其指向控制台应用程序的project.json。在这种情况下,它是ConsoleApp\project.json,一旦有足够的smarts,您就不需要在webjob中运行这个run.cmd。如果你看一下kudu,它使用了一个非常类似的方法,只是还不够聪明,无法找到控制台应用程序的正确路径

@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

下面是一个有效的回购示例。克隆它,压缩它,然后上传它。它应该有用

不幸的是,对DNX webJob的支持还没有完成,所以这个场景不是开箱即用的,您需要一个magic run.cmd,它在repo中,也在下面的答案中

DNX的文件夹结构是,项目应位于不同的同级文件夹中。因此,如果你看一下回购协议中的文件夹结构,它是这样的

|   run.cmd
|
+---ClassLibrary
|       Class.cs
|       project.json
|
\---ConsoleApp
        Program.cs
        project.json
中有一个环境变量DNX_CONSOLE_APP_PATH,您需要手动将其指向控制台应用程序的project.json。在这种情况下,它是ConsoleApp\project.json,一旦有足够的smarts,您就不需要在webjob中运行这个run.cmd。如果你看一下kudu,它使用了一个非常类似的方法,只是还不够聪明,无法找到控制台应用程序的正确路径

@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

所以如果我说文件夹“WebJob1”中有project.json和Program.cs,文件夹“ClassLib1”中有project.json和Model.cs,那么我应该只压缩两个文件夹?我试着这么做,如果你有完全相同的结构,它不是在本地运行吗?如果不是,那么问题更多的是一个一般性的dnx问题,但与WebJobs无关。我使用的是这里描述的方法:我不确定在这种情况下完全相同的结构意味着什么。是的,我和Ahmed谈过。按照他的回答:如果我说文件夹“WebJob1”中有project.json和Program.cs,文件夹“ClassLib1”中有project.json和Model.cs,那么我应该只压缩两个文件夹?我试着这么做,如果你有完全相同的结构,它不是在本地运行吗?如果不是,那么问题更多的是一个一般性的dnx问题,但与WebJobs无关。我使用的是这里描述的方法:我不确定在这种情况下完全相同的结构意味着什么。是的,我和Ahmed谈过。按照他的回答: