2

我的印象是独立的核心部署附带了构建/发布所需的一切,但我已将发布文件夹的内容发送到目标环境,但出现以下错误:

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

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

<PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>

为了清楚起见,我尝试从发布目录和 winx64 目录(我惊讶地发现它的大小要小得多?)

我知道这里的解决方案之一可能是确保我在目标环境上安装框架/依赖项,但我真的想避免这样做,因为我希望这个应用程序真正独立。

项目 XML:

在此处输入图像描述

发布设置:

在此处输入图像描述

4

1 回答 1

1

我相信这个问题仅与使用Microsoft.AspNetCore.App元包有关。

当您使用 Microsoft.AspNetCore.App 元包时,引用的 ASP.NET Core NuGet 包中的任何资产都不会与应用程序一起部署 - ASP.NET Core 共享框架包含这些资产。

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>

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

仅使用 Microsoft.AspNetCore.App 元包发布的控制台应用程序

示例 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包含包的临时依赖项。

直接引用 Microsoft.AspNet.WebApi.Client 的已发布控制台应用程序


我希望它会有所帮助。

于 2019-08-22T20:52:57.383 回答