【问题标题】:Error: An assembly specified in the application dependencies manifest not found Package:Newtonsoft.Json when deploying .Net core 2.2错误:在部署.Net core 2.2 时找不到应用程序依赖项清单中指定的程序集包:Newtonsoft.Json
【发布时间】:2020-01-20 04:28:43
【问题描述】:

我正在使用自包含部署并使用一些 3rd 方库(如 log4net 和 Newtonsoft.Json)来部署 .Net core 2.2 控制台应用程序。该应用程序在其开发的系统上运行良好,但在部署到任何其他系统时无法运行。显示以下错误:

C:\Users\shubhamjain\source\repos\Collect\Collect\bin\Release\netcoreapp2.2\win-x64>Collect.exe

错误: 未找到应用程序依赖项清单 (Collect.deps.json) 中指定的程序集: 包:'Newtonsoft.Json',版本:'12.0.2' 路径:'lib/netstandard1.3/Newtonsoft.Json.dll'

我尝试了以下方法:

  1. 从 2.1 和 2.2 更改 .Net 核心版本
  2. 从 nuget 更改 Newtonsoft.Json 的版本
  3. 更新 Visual Studio 2019

没有任何效果,但是当我查看文件(路径 C:\Users\shubhamjain\source\repos\Collect\Collect\bin\Release\netcoreapp2.2\win-x64 中的“Collect.runtimeconfig.dev.json”)并使用部署的系统用户名更改 shubhamjain 时,一切正常。

现在,我观察到 Newtonsoft.Json 取决于文件 (.runtimeconfig.dev.json),为了使其正常工作,我必须更改此文件中的用户名。

有没有办法自动解决这个问题?

Collect.runtimeconfig.dev.json

{
  "runtimeOptions": {
     "additionalProbingPaths": [
        "C:\\Users\\shubhamjain\\.dotnet\\store\\|arch|\\|tfm|",
        "C:\\Users\\shubhamjain\\.nuget\\packages",
        "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder" ]
  }
}

【问题讨论】:

    标签: c# .net .net-core json.net


    【解决方案1】:

    您可以尝试使用%username% 参数配置您的json 文件吗?我不确定是否可以以这种方式运行,但您可以在命令提示符中使用该参数来获取登录的用户名。 您可以查看link了解更多详情。

    在这种情况下,您的 Collect.runtimeconfig.dev.json 将是:

    {
       "runtimeOptions": {
          "additionalProbingPaths": [
             "C:\\Users\\%username%\\.dotnet\\store\\|arch|\\|tfm|",
             "C:\\Users\\%username%\\.nuget\\packages",
             "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder" ]
       }
    }
    

    您还可以为不同的环境准备不同的配置文件。也许this Microsoft Doc 可能对此有所帮助。

    【讨论】:

    • 这不起作用。此外,这是一个 .Net Core 控制台应用程序,我相信我们不必为用户名传递任何参数。一定有别的办法。
    猜你喜欢
    • 2017-10-25
    • 2019-10-14
    • 2018-07-31
    • 2018-01-04
    • 2020-02-01
    • 1970-01-01
    • 2020-07-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多