gpt4 book ai didi

c# - AspNetCore项目仅在Linux容器上提供System.IO.FileNotFoundException

转载 作者:行者123 更新时间:2023-12-02 19:33:14 27 4
gpt4 key购买 nike

我有一个运行AspNetCore Web服务器的dotnet核心项目。我使用了其他两个DLL,它们是相当简单的类库。

我可以将存储库从git下载到Windows PC上,然后运行:

dotnet restore
dotnet run

而且一切正常。

但是,如果我在基于microsoft / aspnetcore-build:1.0.7的Docker容器中执行相同的操作,则在HTTP PUT上会收到以下错误:
fail: Microsoft.AspNetCore.Server.Kestrel[13]
Connection id "0HLBKHRVH7OND": An unhandled exception was thrown by the application.
System.IO.FileNotFoundException: Could not load file or assembly 'KolData, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.

现在文件Koldata.dll确实存在于git存储库中,并且位于bin / Debug / netcoreapp1.1文件夹中。

我可以通过删除构建目录中的KolData.dll文件来在Windows中重新创建错误。因此,似乎Linux上的dotnet核心看不到该文件,我不确定为什么。

我什至尝试用源代码在机器上构建的版本替换DLL,但它仍然带来相同的错误。

一种解决方案

我设法通过将csproj文件的目标框架从以下位置更改来使其工作:
<PropertyGroup>
<TargetFramework>netcoreapp1.1</TargetFramework>
<PackageTargetFallback>portable-net45+win8</PackageTargetFallback>
</PropertyGroup>

至:
 <PropertyGroup>
<TargetFramework>netcoreapp1.0</TargetFramework>
<PackageTargetFallback>portable-net45+win8</PackageTargetFallback>
</PropertyGroup>

由于KolData.dll在1.1上运行,因此这有点奇怪
但是现在它可以正常运行了。

最佳答案

您必须创建Dockerfile并构建Docker镜像。

编辑:
Dockerfile外观的示例。以下文件构建Visual Studio项目并创建docker镜像。

FROM microsoft/aspnetcore:2.0 AS base
WORKDIR /app
EXPOSE 80

FROM microsoft/aspnetcore-build:2.0 AS build
WORKDIR /src
COPY *.sln ./
COPY WebApplication/WebApplication.csproj WebApplication/
RUN dotnet restore
COPY . .
WORKDIR /src/WebApplication
RUN dotnet build -c Release -o /app

FROM build AS publish
RUN dotnet publish -c Release -o /app

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "WebApplication.dll"]

如果您已经使用Dockerfile在容器中构建了包含.dll的应用程序,则:
FROM microsoft/aspnetcore:2.0
WORKDIR /app
COPY . .
ENTRYPOINT ["dotnet", "application.dll"]

生成并运行您的应用程序:
docker build -t application
docker run -d -p 8000:80 application

Building Docker Images for .NET Core Applications

关于c# - AspNetCore项目仅在Linux容器上提供System.IO.FileNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48812246/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com