2017-02-17 62 views
1

我试图在Ubuntu 16.04上部署.NET Core应用程序。该项目包含(也就是不通过的NuGet),本地输入dotnet restore我收到下面的日志,当应用程序工作正常(win10-64),但是在服务器上的其他项目引用:asp.net核心恢复失败 - 多个项目(ubuntu-16.04-x64)

[email protected]:/home/XXXXXX$ dotnet restore 
    log : Restoring packages for /home/XXXXXX/project.json... 
    error: Unable to resolve 'XXXXXX.Configuration (>= 1.0.0)' for '.NETCoreApp,Version=v1.0'. 
    error: Unable to resolve 'XXXXXX.DataModels (>= 1.0.0)' for '.NETCoreApp,Version=v1.0'. 
    error: Unable to resolve 'XXXXXX.DAL (>= 1.0.0)' for '.NETCoreApp,Version=v1.0'. 
    error: Unable to resolve 'XXXXXX.Application (>= 1.0.0-0)' for '.NETCoreApp,Version=v1.0'. 
    error: Unable to resolve 'XXXXXX.BLL (>= 1.0.0)' for '.NETCoreApp,Version=v1.0'. 
    log : Lock file has not changed. Skipping lock file write. Path: /home/XXXXXX/project.lock.json 
    log : /home/XXXXXX/project.json 
    log : Restore failed in 4546ms. 

log : Lock file has not changed. Skipping lock file write. Path: 

我已审查的建议相关的问题here,herehere但是没有一个解决方案似乎解决了我的问题。

考虑改变核心框架的步伐,我会指定使用的版本和project.json文件的项目:

XXXXXX.Configuration(.NET核心类库) project.json :

{ 
    "version": "1.0.0-*", 

    "dependencies": { 
    "NETStandard.Library": "1.6.1" 
    }, 

    "frameworks": { 
    "netstandard1.6": { 
     "imports": "dnxcore50" 
    } 
    } 
} 

XXXXXX.DataModels(.NET核心类库) project.json

{ 
    "version": "1.0.0-*", 

    "dependencies": { 
    "NETStandard.Library": "1.6.1", 
    "XXXXXX.Application": "1.0.0-0" 
    }, 

    "frameworks": { 
    "netstandard1.6": { 
     "imports": "dnxcore50" 
    } 
    } 
} 

XXXXXX.DAL(.NET核心类库) project.json

{ 
    "version": "1.0.0-*", 

    "dependencies": { 
    "MySql.Data": "7.0.6-IR31", 
    "NETStandard.Library": "1.6.1", 
    "XXXXXX.Application": "1.0.0-0", 
    "XXXXXX.Configuration": "1.0.0-*", 
    "XXXXXX.DataModels": "1.0.0-*" 
    }, 

    "frameworks": { 
    "netstandard1.6": { 
     "imports": "dnxcore50" 
    } 
    } 
} 

XXXXXX.Application(.NET核心类库) poject.json

{ 
    "version": "1.0.0-0", 

    "dependencies": { 
    "Microsoft.AspNetCore.Mvc.Abstractions": "1.1.0", 
    "Microsoft.AspNetCore.Mvc.Core": "1.1.0", 
    "Microsoft.AspNetCore.Mvc.DataAnnotations": "1.1.0", 
    "Microsoft.AspNetCore.Mvc.ViewFeatures": "1.1.0", 
    "MySql.Data": "7.0.6-IR31", 
    "NETStandard.Library": "1.6.1", 
    "System.Data.SqlClient": "4.3.0" 
    }, 

    "frameworks": { 
    "netstandard1.6": { 
     "imports": "dnxcore50" 
    } 
    } 
} 

XXXXXX.BLL(.NET Core Class Library) project.json

{ 
    "version": "1.0.0-*", 

    "dependencies": { 
    "Microsoft.Extensions.Configuration.Binder": "1.1.0", 
    "NETStandard.Library": "1.6.1", 
    "XXXXXX.Application": "1.0.0-*", 
    "XXXXXX.Configuration": "1.0.0-*", 
    "XXXXXX.DAL": "1.0.0-*", 
    "XXXXXX.DataModels": "1.0.0-*" 
    }, 

    "frameworks": { 
    "netstandard1.6": { 
     "imports": "dnxcore50" 
    } 
    } 
} 

最后,该设备结合起来的.NET核心Web UI proejct:

XXXXXX.WebUI project.json

{ 
    "dependencies": { 
    "BundlerMinifier.Core": "2.3.327", 
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.1.0-preview4-final", 
    "Microsoft.AspNetCore.Mvc": "1.1.1", 
    "Microsoft.AspNetCore.Razor.Tools": "1.1.0-preview4-final", 
    "Microsoft.AspNetCore.Routing": "1.1.0", 
    "Microsoft.AspNetCore.Server.IISIntegration": "1.1.0", 
    "Microsoft.AspNetCore.Server.Kestrel": "1.1.0", 
    "Microsoft.AspNetCore.StaticFiles": "1.1.0", 
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.1.0", 
    "Microsoft.Extensions.Configuration.Json": "1.1.0", 
    "Microsoft.NETCore.App": { 
     "version": "1.1.0", 
     "type": "platform" 
    }, 
    "Microsoft.AspNetCore.Session": "1.1.0", 
    "PaulMiami.AspNetCore.Mvc.Recaptcha": "1.1.1", 
    "Microsoft.AspNetCore.Mvc.Abstractions": "1.1.1", 
    "Microsoft.Extensions.Options": "1.1.0", 
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.1.0", 
    "XXXXXX.DataModels": { 
     "version":"1.0.0-*", 
     "target": "project" 
    }, 
    "XXXXXX.Application": { 
     "version": "1.0.0-0", 
     "target": "project" 
    }, 
    "XXXXXX.Configuration": { 
     "version": "1.0.0-*", 
     "target": "project" 
    }, 
    "XXXXXX.DAL": { 
     "version": "1.0.0-*", 
     "target": "project" 
    }, 
    "XXXXXX.BLL": { 
     "version": "1.0.0-*", 
     "target": "project" 
    } 
    }, 

    "tools": { 
    }, 

    "frameworks": { 
    "netcoreapp1.0": { 
     "imports": [ 
     "dotnet5.6", 
     "portable-net45+win8" 
     ] 
    } 
    }, 

    "buildOptions": { 
    "emitEntryPoint": true, 
    "preserveCompilationContext": true, 
    "copyToOutput": [ "web.development.environment.json" ] 
    }, 

    "runtimeOptions": { 
    "configProperties": { 
     "System.GC.Server": true 
    } 
    }, 

    "runtimes": { 
    "win10-x64": {}, 
    "ubuntu.16.04-x64": {} 
    }, 

    "publishOptions": { 
    "include": [ 
     "wwwroot", 
     "**/*.cshtml", 
     "appsettings.json", 
     "web.config", 
     "global.json", 
     "project.json", 
     "web.development.environment.json" 
    ] 
    }, 

    "scripts": { 
    "prepublish": [ "bower install", "dotnet bundle" ], 
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ] 
    } 
} 

我也有一个global.json其发布时位于根文件夹中(项目上一级)

{ 
    "projects": [ 
    "src", 
    "/home/XXXXXX/XXXXXX.Application.dll", 
    "/home/XXXXXX/XXXXXX.Configuration.dll", 
    "/home/XXXXXX/XXXXXX.DataModels.dll", 
    "/home/XXXXXX/XXXXXX.Common.dll", 
    "/home/XXXXXX/XXXXXX.BLL.dll", 
    "/home/XXXXXX/XXXXXX.DAL.dll", 
    "/home/XXXXXX/XXXXXX.Notifications.Client.dll", 
    "/home/XXXXXX/XXXXXX.Notifications.DataModels.dll", 
    "/home/XXXXXX/XXXXXX.WebUI.dll" 
    ] 
} 

编辑

发布/内VS建立创建以下层次:

/home 
     /XXXXXX 
      /bin 
      /refs 
      /runtimes 
      /Views 
      /wwwroot 
     global.json 
     project.json 
     XXXXXX.Configuration.dll 
     XXXXXX.Application.dll 
     XXXXXX.DataModels.dll 
     XXXXXX.BLL.dll 
     XXXXXX.DAL.dll 
     XXXXXX.WebUI.dll 
     web.config 
     web.development.environment.json 
     (+ Many .NET dlls) 

因此,所有项目都是构建并放置在同一水平 - 似乎是错误的,但嘿,这是自动化。

帮助!

+0

您是否在开发工作站和Ubuntu服务器之间运行不同版本的dotnet核心运行时?你可以用dotnet --version来检查。另外,你是否考虑过预览4框架并将你的项目迁移到.csproj文件?我发现他们对项目引用有更好的支持。 –

+0

嗨尼克,是的版本是一样的。我读他们决定改变机智,并从json移回到旧的XML配置风格。但是,将此解决方案中所有项目的时间转换为燃烧时间被认为没有商业可行性。这是一个付费项目,其预算必须保留:(任何其他可能性? –

+0

这两种环境都在运行'1.0.0-preview2-1-003177' –

回答

0

基本上,问题出现在某些第三方软件包已经迁移到仅支持netcoreapp1.1。

我在VS 2017(使用ye olde .csproj)中重新创建了我的项目,升级到1.1。现在一切正常。

我的建议是获得VS 2017和移植任何项目依赖较旧版本的dotnet核心,以避免以后的Nuget问题。

希望未来几个月能够在平台中保持更高的稳定性。