ASPNET CORE 1.1.1在发布到共享主机

时间:2017-06-01 20:05:42

标签: asp.net-mvc deployment

我的ASPNet Core 1.1.1网络应用程序在我的本地开发环境中正常运行。当我使用visual studio“发布”功能将其发布到共享主机时,我在某些视图页面上出现以下错误,其中我引用了@using NuGet.Protocol.Core.v3

以下是错误消息

  

缺少一个或多个编译引用。可能的原因包括应用程序的project.json中'buildOptions'下缺少'preserveCompilationContext'属性。   找不到类型或命名空间名称'NuGet'(您是否缺少using指令或程序集引用?)   @using NuGet.Protocol.Core.v3   ProcessShiftViewModel'不包含'ToJson'的定义,并且没有扩展方法'ToJson'可以找到接受类型'ProcessShiftViewModel'的第一个参数(你是否缺少using指令或汇编引用?)

var data = @Html.Raw(Model.ToJson());

以下是我的project.json

的一部分
"buildOptions": {
    "emitEntryPoint": true,
    "preserveCompilationContext": true
},
"runtimeOptions": {
    "configProperties": {
        "System.GC.Server": true
    }
},
"publishOptions": {
    "include": [
        "wwwroot",
        "Views",
        "Areas/**/Views",
        "appsettings.json",
        "web.config"
    ]
},

以下是我的global.json

{
    "projects": [ "src", "test" ],
    "sdk": {
    "version": "1.0.0-preview2-1-003177"
}

部署环境是SmarterAsp.net托管提供的共享托管。非常感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

似乎NuGet.Protocol.Core.v3是.Net Framework 4.6.1的一部分。在我的开发环境中安装没有帮助。我在这个库中使用了Json序列化程序。我找到了解决方法并停止使用此库。这是一个例子

使用NuGet.Protocol.Core.v3库代码

       var data = @Html.Raw(Model.ToJson()); 

用以下

替换它
        var data =  ko.mapping.fromJS(@Html.Raw(JsonConvert.SerializeObject(Model)));

请注意我使用的是Knockout。如果您不使用Knocout,则可以使用其他序列化程序。你也可以尝试做类似跟随的事情(尽管会产生稍微不同的结果)

 var data =   @Html.Raw(Json.Serialize(Model.Content));