2017-04-15 43 views
0

我想通过Travis CI部署一个dotnet核心web应用程序到Ubuntu VPS。我在使用dotnet restore && dotnet publish -c release -r ubuntu.16.04-x64构建服务器之前。构建和部署在Travis上完成的很好,但是当我在服务器上重新启动应用程序服务时,出现如下所示的错误。'dotnet发布'错误引用依赖关系在不存在的lib目录中

Error: assembly specified in the dependencies manifest was not found -- package: 'microsoft.aspnetcore.antiforgery', version: '1.1.1', path: 'lib/netstandard1.3/Microsoft.AspNetCore.Antiforgery.dll'

该被作为对发布的一部分创建的*.deps.json文件具有系如下面的那些。

"microsoft.aspnetcore.antiforgery/1.1.1": { 
    "dependencies": { 
     "Microsoft.AspNetCore.DataProtection": "1.1.1", 
     "Microsoft.AspNetCore.Http.Abstractions": "1.1.1", 
     "Microsoft.AspNetCore.Http.Extensions": "1.1.1", 
     "Microsoft.AspNetCore.WebUtilities": "1.1.1", 
     "Microsoft.Extensions.ObjectPool": "1.1.0", 
     "NETStandard.Library": "1.6.1" 
    }, 
    "compile": { 
     "lib/netstandard1.3/Microsoft.AspNetCore.Antiforgery.dll": {} 
    } 
    }, 
    "microsoft.aspnetcore.authorization/1.1.1": { 
    "dependencies": { 
     "Microsoft.Extensions.Logging.Abstractions": "1.1.1", 
     "Microsoft.Extensions.Options": "1.1.1", 
     "NETStandard.Library": "1.6.1", 
     "System.Security.Claims": "4.3.0" 
    }, 
    "compile": { 
     "lib/netstandard1.3/Microsoft.AspNetCore.Authorization.dll": {} 
    } 
}, 

那些“编译”的属性是什么原因造成的问题,因为如果我手动删除编译属性为lib/netstandard1.3/Microsoft.AspNetCore.Antiforgery.dll,错误现在变成:

Error: assembly specified in the dependencies manifest was not found -- package: 'microsoft.aspnetcore.authorization', version: '1.1.1', path: 'lib/netstandard1.3/Microsoft.AspNetCore.Authorization.dll'

为什么这些编译属性得到在*.deps.json文件中创建?他们需要吗?如果是这样,为什么目录没有创建时,我dotnet publish?如果没有,我如何删除它们以便我的应用程序运行?

谢谢。

回答

3

因此,我再次重读docs,并注意到我一直忽略的一些细节。我一直在部署netcoreapp1.1的所有内容,而不仅仅是netcoreapp1.1/publish的内容。所以,我的服务器正在执行netcoreapp1.1中的.dll文件,而不是netcoreapp1.1/publish中的.dll文件。这解决了我所有的问题。

+0

谢谢你,真是一个惊喜。 – Kugel

相关问题