У меня есть решение с двумя веб-сервисами. Все проекты в этом решении имеют установленную целевую структуру net6.0
. Локальная сборка проходит без ошибок. Я пытаюсь создать образ докера из файла докера и получаю много CS0246
ошибок на dotnet build
этапе.
Мой докерфайл:
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS env
WORKDIR /app
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY . .
RUN dotnet restore
COPY . .
RUN dotnet build -c Debug -o /app/build --no-restore
FROM build AS publish
RUN dotnet publish "My.Api/My.Api.csproj" -c Debug -o /app/publish --no-build --no-restore
FROM env AS final
WORKDIR /app
COPY --from=build /app/publish ./
EXPOSE 5000
ENV ASPNETCORE_URLS=https://+:5000
ENV ASPNETCORE_ENVIRONMENT=Development
ENTRYPOINT ["dotnet", "My.Api.dll"]
Команда, которую я вызываю из каталога решения: docker build . -t my.api:1.0.0 -t my.api:lastest -f ./My.Api/Dockerfile --no-cache
А вот часть вывода этой команды:
[+] Building 45.9s (14/15)
[internal] load build definition from Dockerfile
transferring dockerfile: 618B
[internal] load .dockerignore
transferring context: 35B
[internal] load metadata for mcr.microsoft.com/dotnet/aspnet:6.0
[internal] load metadata for mcr.microsoft.com/dotnet/sdk:6.0
[build 1/6] FROM mcr.microsoft.com/dotnet/sdk:6.0
[env 1/2] FROM mcr.microsoft.com/dotnet/aspnet:6.0
[internal] load build context
transferring context: 11.35kB
CACHED [build 2/6] WORKDIR /src
CACHED [env 2/2] WORKDIR /app
CACHED [final 1/2] WORKDIR /app
[build 3/6] COPY . .
[build 4/6] RUN dotnet restore
[build 5/6] COPY . .
ERROR [build 6/6] RUN dotnet build -c Debug -o /app/build --no-restore
------
> [build 6/6] RUN dotnet build -c Debug -o /app/build --no-restore:
#14 0.700 MSBuild version 17.3.2+561848881 for .NET
#14 4.307 /src/Localization/LocalizationAttribute.cs(6,47): error CS0246: The type or namespace name 'Attribute' could not be found (are you missing a using directive or an assembly reference?) [/src/Localization/Localization.csproj]
#14 4.307 /src/Localization/LocalizationAttribute.cs(5,2): error CS0246: The type or namespace name 'AttributeUsageAttribute' could not be found (are you missing a using directive or an assembly reference?) [/src/Localization/Localization.csproj]
#14 4.307 /src/Localization/LocalizationAttribute.cs(5,2): error CS0246: The type or namespace name 'AttributeUsage' could not be found (are you missing a using directive or an assembly reference?) [/src/Localization/Localization.csproj]
#14 4.307 /src/Localization/LocalizationAttribute.cs(5,17): error CS0103: The name 'AttributeTargets' does not exist in the current context [/src/Localization/Localization.csproj]
#14 4.307 /src/Localization/LocalizationAttribute.cs(8,22): error CS0246: The type or namespace name 'Type' could not be found (are you missing a using directive or an assembly reference?) [/src/Localization/Localization.csproj]
#14 4.307 /src/Localization/LocalizationAttribute.cs(10,57): error CS0246: The type or namespace name 'Type' could not be found (are you missing a using directive or an assembly reference?) [/src/Localization/Localization.csproj]
#14 4.307 /src/Localization/LocalizationAttribute.cs(18,13): warning CS8632: The annotation for nullable reference types should only be used in code within a '#nullable' annotations context. [/src/Localization/Localization.csproj]
#14 4.315 /src/Common/Extensions/CollectionExtensions.cs(5,40): error CS0246: The type or namespace name 'IEnumerable<>' could not be found (are you missing a using directive or an assembly reference?) [/src/Common/Common.csproj]
#14 4.315 /src/Common/Extensions/CollectionExtensions.cs(12,40): error CS0246: The type or namespace name 'ICollection<>' could not be found (are you missing a using directive or an assembly reference?) [/src/Common/Common.csproj]
#14 4.315 /src/Common/Extensions/CollectionExtensions.cs(14,43): error CS0246: The type or namespace name 'IEnumerable<>' could not be found (are you missing a using directive or an assembly reference?) [/src/Common/Common.csproj]
#14 4.315 /src/Common/Extensions/StringExtensions.cs(7,70): warning CS8632: The annotation for nullable reference types should only be used in code within a '#nullable' annotations context. [/src/Common/Common.csproj]
#14 5.176
#14 5.176 Build FAILED.
#14 5.17
Я попытался:
--no-cache
и без негоCOPY
и найдите файлы в контейнере. Они все там@ХансКилиан. Как я уже сказал, это net6.0 во всех проектах. <TargetFramework>net6.0</TargetFramework>
Я нашел решение. В среде docker dotnet есть ошибка или что-то еще. Это просто не работает с ImplicitUsings
.
Удаление этого тега и добавление использования вручную заставило его работать. Глобальное использование также работает.
На какую платформу нацелено ваше решение в вашем файле
.csproj
?