Когда я бегу:
dotnet publish -c Release -o out
Я получил:
google/protobuf/Timestamp.proto: ошибка: файл не найден. [/app/StorageService.GRPC.Server/StorageService.GRPC.Server.csproj] Protos/candidate.proto(4,1): ошибка: импорт «google/protobuf/Timestamp.proto» не найден или имел ошибки. [/app/StorageService.GRPC.Server/StorageService.GRPC.Server.csproj] Protos/candidate.proto(107,3): ошибка: «google.protobuf.Timestamp» не определен. [/app/StorageService.GRPC.Server/StorageService.GRPC.Server.csproj]
Это мой /usr/local/include/google/protobuf
:
А это мой /usr/local/bin/
:
Все это делается в образе докера, который взят из этого файла докеров:
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build-env
WORKDIR /app
RUN apt-get update && apt-get install -y protobuf-compiler libprotobuf-dev protobuf-c-compiler
COPY *.sln .
COPY Domain/*.csproj ./Domain/
COPY Application/*.csproj ./Application/
COPY Infrastructure/*.csproj ./Infrastructure/
COPY StorageService.GRPC.Server/*.csproj ./StorageService.GRPC.Server/
COPY BOM.StorageService/*.csproj ./BOM.StorageService/
COPY Test.BOM.StorageService/*.csproj ./Test.BOM.StorageService/
RUN dotnet restore
COPY StorageService.GRPC.Server/Protos /app/Protos
COPY . ./
COPY StorageService.GRPC.Server/Protos/include/ /usr/local/include/
COPY StorageService.GRPC.Server/Protos/bin/ /usr/local/bin/
Я решил это. В Windows google/protobuf/Timestamp.proto
все в порядке, но если вы хотите выполнить развертывание в Linux и поскольку Linux чувствителен к регистру, вам следует импортировать:
google/protobuf/timestamp.proto