C# 多表依赖的web应用程序如何解决依赖性问题?

C# 多表依赖的web应用程序如何解决依赖性问题?,c#,azure,docker,devops,C#,Azure,Docker,Devops,恢复依赖项docker build时如何解决找不到的问题?我有这个问题。我的文件结构如下所示 请关注我的Dockerfile: [Solution] 'xxxxx' (3 Projects) | +-- [xxxxx.Web] | | | +--- xxxxx.Web.csproj (This project holds the Docker file) | +-- [xxxxx.xxxxserver] | | | +--- xxxxx.

恢复依赖项docker build时如何解决找不到的问题?我有这个问题。我的文件结构如下所示

请关注我的Dockerfile:

[Solution] 'xxxxx' (3 Projects) | +-- [xxxxx.Web] | | | +--- xxxxx.Web.csproj (This project holds the Docker file) | +-- [xxxxx.xxxxserver] | | | +--- xxxxx.xxxxserver.csproj | +-- [xxxxx.xxxxApi.Client] | +--- xxxxx.xxxxApi.Client.csproj 1. xxxxx.Web.csproj -> API 2. xxxxx.xxxxserver/xxxxx.xxxxserver.csproj -> IdentityServer 3. xxxxx.xxxxApi.Client/xxxxx.xxxxApi.Client.csproj -> xxxxApi.Client
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /src
COPY ["xxxxx.Web.csproj", "./"]

COPY ["common.props", "./"]

RUN dotnet restore "xxxxx.Web.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "xxxxx.Web.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "xxxxx.Web.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "xxxxx.Web.dll"]
常用道具:

<Project>
  <PropertyGroup>
    <LangVersion>latest</LangVersion>
    <Version>1.0.0</Version>
    <NoWarn>$(NoWarn);CS1591;CS0436</NoWarn>
    <AbpProjectType>app</AbpProjectType>
  </PropertyGroup>
</Project>

最新的
1.0.0
美元(诺瓦恩);CS1591;CS0436
应用程序

在我看来,您复制文件的路径是错误的。您还需要复制*.sln文件。首先检查路径

根据对问题的描述,在我看来,将Dockerfile设置为这样更为正确:

COPY xxxxx.Web/*.csproj ./xxxxx.Web/
COPY xxxxx.xxxserver/*.csproj ./xxxxx.xxxserver/
COPY xxxxx.xxxxApi.Client/*.csproj ./xxxxx.xxxxApi.Client/

WORKDIR /app/xxxxx.Web

RUN dotnet restore
首先,将Dockerfile与sln文件对齐

试试这个

COPY *.sln .
COPY xxxxx.Web/*.csproj ./xxxxx.Web/
COPY xxxxx.xxxserver/*.csproj ./xxxxx.xxxserver/
COPY xxxxx.xxxxApi.Client/*.csproj ./xxxxx.xxxxApi.Client/

RUN dotnet restore

COPY . .

WORKDIR /app/xxxxx.Web
RUN dotnet publish -c release -o /app --no-restore
upd: 如果没有*.sln文件,只需将WORKDIR更改为启动项目,如下所示:

COPY xxxxx.Web/*.csproj ./xxxxx.Web/
COPY xxxxx.xxxserver/*.csproj ./xxxxx.xxxserver/
COPY xxxxx.xxxxApi.Client/*.csproj ./xxxxx.xxxxApi.Client/

WORKDIR /app/xxxxx.Web

RUN dotnet restore

我很难把这个问题和这个问题分开。您是否无意中发布了两次相同的问题?@MindSwipe感谢您的关注。我掉了另一个!错误信息非常清楚,
common.props
未在预期位置找到。确保即使在docker容器中,
common.props
也位于
EventHub.Web.csproj
中指定的位置。在本例中,位于
。/../common.props
Aleksandr;谢谢你的回答,但是想象一下,我怎样才能做到这一点呢?因为我必须创建镜像fır Identityserver,并且必须为Httpapi.client创建镜像。当我移动Dockerfile父文件夹时。我不知道其他图像?是否需要制作两个不同的图像?一个用于Identityserver,一个用于Httpapi.client?是的,绝对是因为我在AKS绑定kubernetes中使用了。5001端口用于标识,5002端口用于Api,80端口用于Web请告诉我什么是常见的。道具?这没有显示在您的图表中。这是EventHub.Web.csproj目录下的目录吗?让我们看看。