“自包含”核心部署(asp网络)缺少DLL

时间:2019-08-19 14:13:46

标签: asp.net asp.net-core .net-core self-contained

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

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

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

<PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>

请明确一点,我尝试从publish目录和winx64目录(我惊讶地发现它的大小要小得多)运行exe(即出现此错误)。

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

项目XML:

enter image description here

发布设置:

enter image description here

1 个答案:

答案 0 :(得分:0)

我认为该问题仅与使用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>

发布项目时,输出目录如下:

Published console application with Microsoft.AspNetCore.App metapackage only

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

Published console application with direct reference to Microsoft.AspNet.WebApi.Client


我希望这会有所帮助。

相关问题