为什么我的项目使用dotnet编译器构建,而不使用docker-compose构建?

时间:2019-07-10 00:17:17

标签: c# docker .net-core docker-compose stylecop

我有一个.Net Core 2.2解决方案,该解决方案可以在Visual Studio中很好地构建并使用dotnet命令行,但是在使用Docker Compose进行构建时会引发StyleCop生成错误。

我正在使用最新的StyleCop.Analyzers nuget包。我的解决方案的根目录中有一个共享规则集,我的所有项目都参考所有构建配置。我在解决方案的根目录中使用了stylecop.json配置文件,所有项目都有链接的引用。 stylecop.json文件的构建操作都设置为“ C#分析器附加文件”。据我所知,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构建”或“ docker-compose”构建构建项目时,我得到的结果相同。

实际结果:使用“ dotnet构建”构建我的项目时,它们都可以成功编译。当我使用“ docker-compose build”时,出现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]

0 个答案:

没有答案