docker - 找不到指定的框架“Microsoft.AspNetCore.App”,版本“2.1.8”。与码头工人
问题描述
我有一个使用 .net core 2.1 编译的项目
该项目非常简单:
Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.1" />
</ItemGroup>
它可以在主机上正确编译和运行。
我制作了一个 docker 镜像:
FROM microsoft/dotnet:2.1-sdk AS build
COPY ./Test /src/Test
WORKDIR /src/Test
RUN dotnet build -c Release -o /app
FROM build AS publish
RUN dotnet publish -c Release -o /app --no-restore
FROM microsoft/dotnet:2.1-runtime AS final
WORKDIR /app
COPY --from=publish /app .
CMD ["dotnet", "Test.dll"]
它构建正确,没有警告。
但是当我执行它时:
# dotnet Test.dll
It was not possible to find any compatible framework version
The specified framework 'Microsoft.AspNetCore.App', version '2.1.1' was not found.
- Check application dependencies and target a framework version installed at:
/usr/share/dotnet/
- Installing .NET Core prerequisites might help resolve this problem:
https://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409
- The .NET Core framework and SDK can be installed from:
https://aka.ms/dotnet-download
因此,当我检查框架版本时(我使用 dotnet:2.1-runtime 构建):
# dotnet --info
Host (useful for support):
Version: 2.1.8
Commit: 209f8aa25c
.NET Core SDKs installed:
No SDKs were found.
.NET Core runtimes installed:
Microsoft.NETCore.App 2.1.8 [/usr/share/dotnet/shared/Microsoft.NETCore.App]
To install additional .NET Core runtimes or SDKs:
https://aka.ms/dotnet-download
所以看起来 2.1.8 安装了,不知何故,它不能起到 2.1.1 的作用。
我尝试了两件事:
- 将我的库更新到 2.1.8 版...然后它找不到 2.1.8 版的 asp 库
- 没有在 csproj 文件中放置任何版本要求,它也找不到 asp lib
如何让这个工作?
解决方案
我发现在使用ASP的时候,不能使用.net core镜像和添加asp库。
您需要获取 .net core asp docker 映像。
推荐阅读
- swift - swift - 无法更改 UIImage tintColor
- regex - 替换引号内的所有逗号(或反引号)
- python - 尝试安装 google.colab 失败后,我的 Jupyter 笔记本无法工作并抛出此错误:“未捕获的 ZMQStream 异常”
- python - 从零到实际值循环np数组的每个元素
- python - 随机执行字典中的键
- php - 如何在换行后将php中的字符串拆分为1800个字符块或更少,或者如果最后一个单词后没有新行?
- c# - 将 linq 结果中缺少的周数填充为 0
- javascript - 为什么 jest.fn().mockImplementation 在 beforeEach 范围中声明时看不到重置变量?
- javascript - 如何将跨度 ID 获取到