【问题标题】:ASP.NET Core 2: missing ApplicationInsightsASP.NET Core 2:缺少 ApplicationInsights
【发布时间】:2018-03-11 13:03:09
【问题描述】:

我正在发布 ASP.NET Core 2 应用程序并看到以下错误。

Error:
  An assembly specified in the application dependencies manifest (MyApp.deps.json) was not found:
    package: 'Microsoft.ApplicationInsights.AspNetCore', version: '2.1.1'
    path: 'lib/netstandard1.6/Microsoft.ApplicationInsights.AspNetCore.dll'

  This assembly was expected to be in the local runtime store as the application was published using the following target manifest files:
    aspnetcore-store-2.0.0-linux-x64.xml;aspnetcore-store-2.0.0-osx-x64.xml;aspnetcore-store-2.0.0-win7-x64.xml;aspnetcore-store-2.0.0-win7-x86.xml

我在开发环境中没有看到这个错误。所以不确定出了什么问题。有关如何解决此问题的任何想法?

更新

我安装了 SDK(我只安装了运行时),一切都开始工作了。不确定这是否是最好的解决方案。

【问题讨论】:

    标签: asp.net-core asp.net-core-2.0


    【解决方案1】:

    我已经通过安装 nuget 包解决了这个问题

    “Microsoft.AspNetCore.ApplicationInsights.HostingStartup”

    【讨论】:

      【解决方案2】:

      我想在@pallxk 的回答中添加一些内容。他给了我解决问题的提示。 我对使用 Visual Studio 很熟悉,但对 VS Code 不太熟悉。

      使用 Visual Studio 我没有问题,但使用 VS Code,正如他所说,我必须手动更新 Nuget 依赖项。我不知道在哪里更新它们。 它们位于我的项目文件夹下:

      .vscode/launch.json
      

      我要更新

      "program": "${workspaceFolder}/Ghaseel.RestApi/bin/Debug/netcoreapp2.1/myProject.dll
      

      到这里

       "program": "${workspaceFolder}/Ghaseel.RestApi/bin/Debug/netcoreapp2.2/myProject.dll
      

      我希望这可以帮助其他人解决他们的问题。

      【讨论】:

        【解决方案3】:

        这个程序集应该在本地运行时存储中

        您收到此错误是因为您没有安装 ASP.NET Core 运行时存储。您有两种选择来解决此问题。

        1. 安装 ASP.NET Core 运行时存储。它与 .NET Core SDK 捆绑在一起,这就是安装 SDK 解决此问题的原因。您也可以在此处下载,只安装商店而不安装 SDK:https://www.microsoft.com/net/download/all

        2. 不要使用运行时存储修剪。您可以通过在您的 csproj 文件中设置此属性来禁用修剪。

            <PropertyGroup>
                <PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>
            </PropertyGroup>
        

        你也可以在命令行中传入。

        dotnet publish /property:PublishWithAspNetCoreTargetManifest=false
        

        更新:2018 年 6 月 25 日

        此答案仅适用于 ASP.NET Core 2.0 项目。在 ASP.NET Core 2.1 中,不再有运行时存储。

        【讨论】:

        • 简单地安装运行时存储并不能解决问题......但是,您的第二个选项可以。
        • 下载链接在摆姿势时是准确的(8个月前)。从那时起,我们进行了多次 2.0.x 补丁更新。您需要从microsoft.com/net/download/all 获取最新的 2.0.x 运行时商店下载。我已经更新了答案以反映这一点。
        • 此答案仅适用于 2.0.x 版本。在撰写本文时,2.1.x 还不存在。我更新了答案以反映它仅适用于 2.0.x。
        • 这里是 Netcore 2.1.1。我使用了 MSBuild,但设置了相同的属性 /p:PublishWithAspNetCoreTargetManifest=false,它确实解决了问题!
        • 第二个选项做到了
        【解决方案4】:

        这里详细讨论了这个问题: https://github.com/dotnet/coreclr/issues/13542 这似乎与在您的项目中将 Microsoft.AspNetCore.All 更新到 2.0.3 或更高版本有关。

        根据上述讨论,似乎有一段时间的解决方案是在主机上安装最新的 .NET Core SDK。但至少对于当前的 SDK 2.1.300,这并没有解决我的问题。

        我的解决方案是,将以下行添加到我的主项目的 .csproj 中:

          <PropertyGroup>
            <PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>
          </PropertyGroup>
        

        通过这一行,所有框架依赖项都将打包到发布文件夹中!使用此开关,我的一个项目的已发布数据从 15 Mb 增长到 55 Mb。但至少这是可行的,直到有更好的解决方案。

        【讨论】:

        • 这也适用于我。其他解决方案无效。
        【解决方案5】:

        确保您的项目具有与 Microsoft.NETCore.App(您的项目目标框架)和 Microsoft.AspNetCore.All(.NET Core 2.0 项目默认包含 NuGet 依赖项)或 Microsoft.AspNetCore.App 匹配的版本(适用于 .NET Core 2.1+ 项目)。

        如果您曾经将项目目标框架从 .NET Core 2.0 更新到 .Net Core 2.1,请记住相应地更新您的 NuGet 依赖项,因为它们不会自动更新。

        【讨论】:

        • 你拯救了我的一天 :)
        • 我将我的项目从 .NET Core 2.0 迁移到 .Net Core 2.1,这个解决方案对我有用。
        猜你喜欢
        • 2018-02-04
        • 2019-01-27
        • 2017-05-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多