Docker运行时错误:无法加载文件或程序集Microsoft.Extensions.Configuration.=那么



我有一个。net core 6.0解决方案和一些c#项目,其中一个是基于Microsoft.NET.Sdk.WorkerSDK的应用程序。

在我的开发环境(Windows, Visual Studio)上构建和运行项目,一切正常。

我可以编译一个docker镜像,使用dockerfile:

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY . .
RUN dotnet restore "MySolution.sln"
COPY . .
RUN dotnet build "MySolution.sln" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "MySolution.sln" -c Release -o /app/publish
FROM base AS final
# Entrypoint
WORKDIR /app
COPY --from=publish /app/publish .

当我在docker镜像上运行应用程序时,它崩溃了,报告以下错误:

Could not load file or assembly 'Microsoft.Extensions.Configuration.Abstractions, Version=7.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference.

奇怪的是,我没有任何(直接)参考Microsoft.Extensions.Configuration.Abstractions组件。

我四处寻找类似的问题,但是,当然,我没有找到任何有用的答复。

如何解决这个问题?

结果是,一个基于xUnit的单元测试项目也属于相同的解决方案。从解决方案中移除单元测试项目后,一切都开始正常工作了。

但是,单元测试项目导致部署的应用程序崩溃的原因我还不清楚。

违规项目的.csproj文件看起来像这样:

<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.5.0" />
<PackageReference Include="xunit" Version="2.4.2" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="coverlet.collector" Version="3.2.0">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
</ItemGroup>
</Project>

相关内容