[英]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>
当我发布项目时,输出目录如下所示:
示例 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
包的瞬态依赖项。
我希望它会有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.