Столкнулся со странной проблемой. Когда я создаю свой Dockerfile
на компьютере с Windows (ноутбук), появляется ошибка ниже, а также такая же ошибка при попытке развернуть на Azure DevOps
.
Step 7/17 : COPY ["WebApp.csproj", ""]
---> 3f3e198d00aa
Step 8/17 : RUN dotnet restore "/WebApp.csproj"
---> Running in 51f16f947ffb
MSBUILD : error MSB1001: Unknown switch.
Switch: /WebApp.csproj
For switch syntax, type "MSBuild -help"
The command '/bin/sh -c dotnet restore "/WebApp.csproj"' returned a non-zero code: 1
PS C:\Users\user\Desktop\Directory>
Но тот же Dockerfile
отлично работает, когда мы собираем его с помощью визуальная студия, он собирается и начинает работать без каких-либо ошибок.
Файл докера выглядит так:
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-stretch-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/core/sdk:2.2-stretch AS build
WORKDIR /src
COPY ["WebApp.csproj", ""]
RUN dotnet restore "/WebApp.csproj"
COPY . .
WORKDIR "/src/"
RUN dotnet build "WebApp.csproj" -c Release -o /app
FROM build AS publish
RUN dotnet publish "WebApp.csproj" -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "WebApp.dll"]
Я имею в виду на своем компьютере.
И это не работает на Azure-Pipelines?
да такая же ошибка и на локалке. Но когда я запускаю его из визуальной студии, он создает и запускает приложение.
в dotent restore
попробуйте удалить /
(только "WebApp,csproj"
)
Здорово! Я добавил это также как ответ :)
Поскольку в вашем dotnet restore
есть /
, поэтому MSBuild думает, что это переключатель (например, /p:
) и терпит неудачу, вам просто нужно удалить его:
RUN dotnet restore "WebApp.csproj"
Что вы имеете в виду «на машине с Windows» (использование Visual Studio не на Windows?)?