簡體   English   中英

“自包含”核心部署 (asp net) 中缺少 DLL

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

我的印象是獨立的核心部署附帶了構建/發布所需的一切,但我已將發布文件夾的內容發送到目標環境,但出現以下錯誤:

未找到應用程序依賴項清單中指定的程序集:包:'Microsoft.AspNet'WebApi.Client',版本:'5.2.6' 路徑:'lib/netstandard2.0/System.Net.Http.Formatting.dll'

我已經嘗試將以下屬性添加到項目 XML 中,但在發布目錄中仍然看不到該 DLL:

<PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>

為了清楚起見,我已經嘗試從發布目錄和 winx64 目錄(我很驚訝地發現它的大小要小得多?)

我知道這里的解決方案之一可能是確保我在目標環境上安裝框架/依賴項,但我真的想避免這樣做,因為我希望這個應用程序真正獨立。

項目 XML:

在此處輸入圖片說明

發布設置:

在此處輸入圖片說明

我相信這個問題只與使用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 的已發布控制台應用程序


我希望它會有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM