Почему мой проект создается с помощью компилятора dotnet, а не docker-compose? - PullRequest
0 голосов
/ 10 июля 2019

У меня есть решение .Net Core 2.2, которое прекрасно работает в Visual Studio и использует командную строку dotnet, но выдает ошибки сборки StyleCop при сборке с Docker Compose.

Я использую последнюю версию пакета nuget StyleCop.Analyzers. У меня есть общий набор правил в корневом каталоге моего решения, на который ссылаются все мои проекты для всех конфигураций сборки. Я использую конфигурационный файл stylecop.json в корне моего решения, с которым все проекты имеют ссылку. Все действия по сборке для файлов stylecop.json установлены на «Дополнительный файл C # analyzer». Насколько я могу судить, StyleCop настроен правильно.

Вот (я полагаю) соответствующие части проблемного файла .csproj.

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <CodeAnalysisRuleSet>..\Shared.ruleset</CodeAnalysisRuleSet>
    <TargetFramework>netcoreapp2.2</TargetFramework>
    <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
    <LangVersion>latest</LangVersion>
    <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
    <WarningsAsErrors />
  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
    <WarningsAsErrors />
  </PropertyGroup>

  <ItemGroup>
    <None Remove="appsettings.json" />
  </ItemGroup>

  <ItemGroup>
    <AdditionalFiles Include="..\stylecop.json" Link="stylecop.json" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="StyleCop.Analyzers" Version="1.1.118">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
  </ItemGroup>

</Project>

Вот мой Dockerfile для проблемного проекта:

FROM mcr.microsoft.com/dotnet/core/runtime:2.2-stretch-slim AS base
WORKDIR /app

FROM mcr.microsoft.com/dotnet/core/sdk:2.2-stretch AS build
WORKDIR /src
COPY ["Subscriber/Subscriber.csproj", "Subscriber/"]
COPY ["Contracts/Contracts.csproj", "Contracts/"]
COPY ["Common/Common.csproj", "Common/"]
RUN dotnet restore "Subscriber/Subscriber.csproj"
COPY . .
WORKDIR "/src/Subscriber"
RUN dotnet build "Subscriber.csproj" -c Release -o /app

FROM build AS publish
RUN dotnet publish "Subscriber.csproj" -c Release -o /app

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "Subscriber.dll"]

Вот соответствующие разделы моего docker-compose.yml:

version: '3.4'

services:
  subscriber:
    image: ${DOCKER_REGISTRY-}subscriber
    build:
      context: .
      dockerfile: Subscriber/Dockerfile

Ожидаемые результаты : при сборке моих проектов с помощью сборки "dotnet build" или "docker-compose" я получаю тот же результат.

Фактические результаты : при сборке моих проектов с помощью "сборки dotnet" все они успешно компилируются. Когда я использую «сборку docker-compose», я получаю ошибки StyleCop, и этап сборки завершается неудачей.

Сообщения об ошибках :

EventMessageDeleter.cs (2,4): ошибка SA1636: авторские права на заголовок файла текст должен соответствовать тексту авторского права из настроек. [/src/Subscriber/Subscriber.csproj]

Host.cs (2,4): ошибка SA1636: текст об авторских правах заголовка файла должен соответствовать тексту авторских прав из настроек. [/src/Subscriber/Subscriber.csproj]

IDeleteEventMessages.cs (2,4): ошибка SA1636: авторские права на заголовок файла текст должен соответствовать тексту авторского права из настроек. [/src/Subscriber/Subscriber.csproj]

MessageHandlers / EventMessageHandler.cs (2,4): ошибка SA1636: файл заголовок авторского текста должен совпадать с авторским текстом из Настройки. [/src/Subscriber/Subscriber.csproj]

...