首先,很抱歉,如果我误解了我所得到的东西,我对Docker完全陌生。
因此,我正在开发一种软件,用于将csv文件处理到数据库中,并且一切都在GCP中运行。要运行我的代码,我可以访问可以使用Docker映像的Cloud Run。
今天我添加了3个新文件:
在进行这些修改之前,我必须运行3个命令才能将我的代码发布到云上:
dotnet build
gcloud builds submit --tag gcr.io/myproject/mytag
gcloud run deploy myservice gcr.io/myproject/mytag--platform managed
但是由于我添加了这些文件,因此出现以下错误:
/usr/share/dotnet/sdk/3.1.401/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.DefaultItems.targets(295,5):错误NETSDK1022:复制了“编译”项包括在内。默认情况下,.NET SDK包含项目目录中的“编译”项。您可以从项目文件中删除这些项目,也可以将“ EnableDefaultCompileItems”属性设置为“ false”(如果要在项目文件中明确包含这些项目)。有关更多信息,请参见https://aka.ms/sdkimplicititems。重复项是:'BusinessLogic / Repository / AcademyRepository.cs'; 'BusinessLogic /存储库/接口/ISourceRepository.cs'; 'BusinessLogic / Repository / SourceRepository.cs'[/app/MyProject.csproj]
我在多个线程上看到了检查.csproj文件中是否有奇怪的...条目的信息,但是我的里面没有这样的东西。
这是我的dockerfile:
# Use Microsoft's official build .NET image.
# https://hub.docker.com/_/microsoft-dotnet-core-sdk/
FROM mcr.microsoft.com/dotnet/core/sdk:3.1-alpine AS build
WORKDIR /app
# Install production dependencies.
# Copy csproj and restore as distinct layers.
COPY *.csproj ./
RUN dotnet restore
# Copy local code to the container image.
COPY . ./
WORKDIR /app
# Build a release artifact.
RUN dotnet publish -c Release -o out # This step fails
# Use Microsoft's official runtime .NET image.
# https://hub.docker.com/_/microsoft-dotnet-core-aspnet/
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-alpine AS runtime
RUN echo 'http://dl-cdn.alpinelinux.org/alpine/v3.8/main' >> /etc/apk/repositories && apk update --no-cache && apk add --no-cache bash libc6-compat=1.1.19-r11
WORKDIR /app
COPY --from=build /app/out ./
# Run the web service on container startup.
ENTRYPOINT ["dotnet", "MyDll.dll"]
我尝试运行在gcloud builds提交命令之外失败的命令,但没有发生任何错误
如果我删除文件并注释相关代码,问题就消失了……但是我有点需要这些文件
编辑: 从Visual Studio中编辑csproj文件不会显示实际文件,而是显示修改后的版本。我用记事本编辑了csproj,进行了清理,然后重新编译了项目,但问题仍然存在。
答案 0 :(得分:0)
找到了一种解决方法:
这是我的体系结构的一部分:
BusinessLogic
--- Repositories
--- Interface
问题存在于“接口”文件夹中。通过删除它并在父文件夹(存储库)中添加我的接口,问题消失了。仍然不知道如何解决实际问题