gpt4 book ai didi

c# - 如何在dockerfile中复制引用项目的.csproj

转载 作者:行者123 更新时间:2023-12-02 19:23:44 29 4
gpt4 key购买 nike

我们正在尝试在 windows 1809 上构建一个 iot edge 模块。我们的项目文件夹层次结构如下:

----BaseDir
|---ClassLibrary1

|---ClassLibrary2
|--references ClassLibrary1
|--references ClassLibrary3

|---ClassLibrary3
|--references ClassLibrary4
|--references ClassLibrary1

|---ClassLibrary4

|---OurIOTEdgeModule
|--references ClassLibrary2

我们的 docker 文件如下所示:
FROM microsoft/dotnet:2.1-sdk AS build-env
WORKDIR /app
COPY *.csproj ./
COPY ./NuGet.Config ./
RUN dotnet restore
COPY . ./
RUN dotnet publish -c Release -o out
FROM microsoft/dotnet:2.1-runtime-nanoserver-1809
WORKDIR /app
COPY --from=build-env /app/out ./
ENTRYPOINT ["dotnet", "IOTEdgeModule.dll"]

当我们构建这个 IOT 边缘模块时,我们没有收到任何构建错误。当我们在 EDGE 设备上部署模块时,我们面临着这个问题。

我们的 IOTEdgeModule 引用了 ClassLibrary2.csproj。 ClassLibrary2 又引用 ClassLibrary3.csproj,后者又引用 ClassLibrary4.csproj。我们的 IOT Edge 模块只能获取 ClassLibrary2.csproj 的引用,但无法引用所有其他依赖的 *.csprojs。

如何修改docker文件来解决这个问题?建议将不胜感激。

最佳答案

这对于 IoT Edge 模板提供的 dockerfile 是不可能的。官方 IoT Edge 存储库包含具有相同结构的示例。他们不是在 docker 容器内构建,而是在外部构建,并且只将构建的二进制文件复制到最终镜像中。看到这个example project file和相应的Dockerfile :

ARG base_tag=2.1.10-alpine3.7
FROM mcr.microsoft.com/dotnet/core/runtime:${base_tag}

ARG EXE_DIR=.

ENV MODULE_NAME "SimulatedTemperatureSensor.dll"

WORKDIR /app

COPY $EXE_DIR/ ./

# Add an unprivileged user account for running the module
RUN adduser -Ds /bin/sh moduleuser
USER moduleuser

CMD echo "$(date --utc +"[%Y-%m-%d %H:%M:%S %:z]"): Starting Module" && \
exec /usr/bin/dotnet SimulatedTemperatureSensor.dll


更新:有一个类似问题的解决方案 here .

关于c# - 如何在dockerfile中复制引用项目的.csproj,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57955205/

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