2016-01-22 73 views
0

我们有一个使用VS2015.1创建的解决方案,其中包含3个项目,全部为DNX RC1DNX Webjob无法解决本地项目依赖性

| sln 
|+---MVC6 Api 
|  project.json 
| +---ClassLibrary 
|  Class.cs 
|  project.json 
| \---Webjob 
     Program.cs 
     project.json 

API和Webjob都在其project.json文件中引用ClassLibrary。

"frameworks": { 
    "dnx451": { 
     "dependencies": { 
     "ClassLibrary": "1.0.0-*" 
     } 
    } 
    } 

我们创建2周的WebApp,均与连续型的集成捆绑解决方案回购和每一个项目应用程序设置指向API文件夹(在一个)和Webjob文件夹(在其他)。

的API项目被部署没有问题,当它试图解决本地项目依赖它的工作原理:

Using Project dependency ClassLibrary 1.0.0 for DNX,Version=v4.5.1 
Copying source code from Project dependency ClassLibrary 
    Source D:\home\site\repository\ClassLibrary\project.json 
    Target D:\local\Temp\8d32044390806ef\approot\src\ClassLibrary 

在另一方面,Webjob,失败,它试图解决它作为一个的NuGet远程包和失败:

[01/21/2016 19:47:45 > b597c3: INFO] GET https://api.nuget.org/v3-flatcontainer/ClassLibrary/index.json 
[01/21/2016 19:47:46 > b597c3: INFO] NotFound https://api.nuget.org/v3-flatcontainer/ClassLibrary/index.json 507ms 
[01/21/2016 19:47:46 > b597c3: ERR ] Unable to locate Dependency ClassLibrary >= 1.0.0-* 

最后这部分我不得不通过捻来检查它,因为它是在部署阶段(如与API)上WebJob明显,而不是在第一次运行完成。

在本地运行WebJob工作没有问题。

我试过在publish dnx based WebJob with local dependencies的解决方案,但没有奏效。

回答

1

在与产品团队交谈之后,默认情况下,3项目方案现在不会正常工作。

publish dnx based WebJob with local dependencies上描述的解决方案适用于2个项目场景,但如果您需要部署WebJob和依赖于相同类库项目的Web应用程序,并且3个应用于相同的回购站,则无法来自持续集成的Webjob部署。

解决方案是为您的Web应用程序设置持续集成(默认情况下它将起作用)并将WebJob手动部署为压缩文件。

进入您的WebJob文件夹并运行dnu publish

进入bin/output/approot/src/YourWebJobFolder

编辑自动生成CMD文件

使用此脚本通过自定义线路4:

@ECHO OFF 

:: 1. Prepare environment 
SET DNX_CONSOLE_APP_PATH=Autocosmos.Trunk.Webjob 
SET DNVM_CMD_PATH_FILE="%USERPROFILE%\.dnx\temp-set-envvars.cmd" 

:: 2. Install DNX 
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% 
) 

call :ExecuteCmd dnx --project "%~dp0src\%DNX_CONSOLE_APP_PATH%" --configuration Release %DNX_CONSOLE_APP_PATH% run 

goto end 

: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. 

然后ZIP斌/输出/为approot上传它Azure上。

相关问题