Bitbucket 构建失败,但本地构建成功,但出现 .EditorConfig 错误

问题描述 投票:0回答:1

我正在使用相当复杂的 .editorconfig 文件构建一些 C#(.net6 核心)代码。

所有 csproj 文件都有

<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>

只有1个.editorconfig,并且位于根文件夹中,带有

root = true

代码在 Visual Studio 2022(最新版本)中构建时没有错误(甚至没有任何智能感知错误),并且在命令行中也可以使用

dotnet build --configuration Debug MySolution.sln

当我在 BitBucket 管道上构建时(使用完全相同的 dotnet 构建),我得到了很多

error IDE0040: Accesibility modifiers required

错误是正确的,但我没有在本地构建错误。

如何让我的本地构建匹配更严格的 BB 构建?

编辑

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

    <PropertyGroup>
        <AccelerateBuildsInVisualStudio>true</AccelerateBuildsInVisualStudio>
        <DocumentationFile>bin\$(Configuration)\($AssemblyName).xml</DocumentationFile>
        <EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
        <ImplicitUsings>enable</ImplicitUsings>
        <IsPackable>true</IsPackable>
        <Nullable>enable</Nullable>
        <TargetFramework>net6.0</TargetFramework>
        <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
    </PropertyGroup>

## Removed <ItemGroup> PacketReferences / ProjectReferences

</Project>

csproj 没有条件部分。

解决方案?

我还有一点,但并不理想。有两种不同的方法可以将某些项目配置为错误。 CodeStyle 和分析器可能控制相同的事情。

代码样式 -> 修饰符首选项 -> 需要辅助功能修饰符

分析仪 -> IDE0040

c# .net-core bitbucket
1个回答
0
投票

我发现问题了。

这与文件行结尾有关。

.gitattribute 具有设置

text=auto
,这意味着行结尾应与操作系统匹配(Linux 为 LF,Windows 为 CRLF)。

Editorconfig 有一行

行尾 = CRLF

在本地,代码是正确的(Windows 上的 git checkout 给出 CRLF 行结尾),但在服务器上它是错误的(Lines 上的 git checkout 给出 LF 行结尾,然后导致构建错误,因为它需要 CRLF)。

答案(这里有很长的讨论:https://github.com/editorconfig/editorconfig/issues/226)是使用

end_of_line = 未设置

忽略行结尾。

奇怪的是,尽管有数千个其他文件的行结尾错误,但这仅破坏了一个源文件中 2 行的构建。

© www.soinside.com 2019 - 2024. All rights reserved.