'self-contained' 核心部署中缺少 DLL(asp 网络)

DLL missing from 'self-contained' core deployment (asp net)

我的印象是独立的核心部署作为 build/release 的一部分附带了他们需要的一切,但我已经将我的发布文件夹的内容发送到目标环境,我得到以下内容错误:

未找到应用程序依赖项清单中指定的程序集: 包:'Microsoft.AspNet'WebApi.Client',版本:'5.2.6' 路径:'lib/netstandard2.0/System.Net.Http.Formatting.dll'

我已经尝试将以下属性添加到项目中 XML 但我仍然无法在发布目录中看到该 DLL:

<PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>

为了清楚起见,我已经尝试 运行 发布目录和 winx64 目录(我惊讶地发现它小得多尺码?)

我知道这里的解决方案之一可能是确保我在目标环境中安装 framework/dependency,但我真的想避免这样做,因为我希望这个应用程序是真正的自我-包含。

项目 XML:

发布设置:

我认为这个问题只与使用 Microsoft.AspNetCore.App 元包有关。

When you use the Microsoft.AspNetCore.App metapackage, no assets from the referenced ASP.NET Core NuGet packages are deployed with the application—the ASP.NET Core shared framework contains these assets.

https://docs.microsoft.com/en-us/aspnet/core/fundamentals/metapackage-app?view=aspnetcore-2.2

它没有发布任何临时依赖项。但是,如果您将 NuGet 包 Microsoft.AspNet.WebApi.Client 直接添加到您的项目中,它应该可以正常工作。

让我举个简单的例子。我正在使用 Visual Studio 2019 并将创建简单的控制台应用程序。

示例 1

我刚刚创建了一个新的控制台应用程序。项目文件看起来像这样。

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.2</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.NETCore.App" />
    <!-- This is a metapackage ^^^ -->
  </ItemGroup>

  <ItemGroup>
    <Folder Include="Properties\PublishProfiles\" />
  </ItemGroup>

</Project>

当我发布项目时,输出目录如下所示:

示例 2

然后我通过添加对 NuGet 包的引用来更新项目 Microsoft.AspNet.WebApi.Client。现在项目文件多了一行:

<ItemGroup>
  <PackageReference Include="Microsoft.AspNet.WebApi.Client" Version="5.2.7" />
  <!-- Direct reference to the package ^^^ -->
  <PackageReference Include="Microsoft.NETCore.App" />
</ItemGroup>

包含 Microsoft.AspNet.WebApi.Client 软件包的瞬态依赖项。


希望对您有所帮助。