【问题标题】:ASPNET CORE 1.1.1 missing NUGet library when published to shared hostingASPNET CORE 1.1.1 发布到共享主机时缺少 NUGet 库
【发布时间】:2017-06-01 20:05:41
【问题描述】:

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

以下是错误信息

缺少一个或多个编译参考。可能的原因包括应用程序的 project.json 中“buildOptions”下缺少“preserveCompilationContext”属性。 找不到类型或命名空间名称“NuGet”(您是否缺少 using 指令或程序集引用?) @使用 NuGet.Protocol.Core.v3 ProcessShiftViewModel'不包含'ToJson'的定义,并且找不到接受'ProcessShiftViewModel'类型的第一个参数的扩展方法'ToJson'(您是否缺少 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 主机提供的共享主机。非常感谢您的帮助。

【问题讨论】:

    标签: asp.net-mvc deployment


    【解决方案1】:

    似乎 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));
    

    【讨论】:

      猜你喜欢
      • 2017-10-18
      • 1970-01-01
      • 1970-01-01
      • 2011-01-18
      • 2015-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-05
      相关资源
      最近更新 更多