Microsoft.CodeAnalysis build error

オープン
#136 コメント 5 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
35/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
停滞
技術スタック
csharp

調査の方向性

dotnet build -c Release で失敗を再現し、その後、エラーに記載されている Microsoft.MSBuildCache.SharedCompilation targets と併せて Directory.Packages.props、Directory.Build.props、Foo.CodeAnalysis.csproj を調査します。Microsoft.CodeAnalysis のバージョンの不一致を追跡し、影響を受けるプロジェクトが ResolveFileAccesses の assembly-load failure なしに正常にビルドされることを確認します。

索引モデルが issue の本文から書いたものです。

説明

When testing out MSBuildCache on my solution, I am getting a build error related to Microsoft.CodeAnalysis 3.8.00, from one of our projects that itself references a difference Microsoft.CodeAnalysis version:

https://github.com/microsoft/MSBuildCache/blob/main/Directory.Packages.props#L29 references <PackageVersion Include="Microsoft.CodeAnalysis" Version="3.8.0" /> so it appears they are clashing?

NB I'm using dotnet build here - is it unsupported and I need a VS Install?

dotnet build -c Release

C:\Users\<snip>\.nuget\packages\microsoft.msbuildcache.sharedcompilation\0.1.318-preview\build\Microsoft.MSBuildCache.Shared
Compilation.targets(9,5): error MSB4018: The "ResolveFileAccesses" task failed unexpectedly. [C:\src\Foo\src\CodeAnalysis\src
\Foo.CodeAnalysis\Foo.CodeAnalysis.csproj]
C:\Users\<snip>\.nuget\packages\microsoft.msbuildcache.sharedcompilation\0.1.318-preview\build\Microsoft.MSBuildCache.Shared
Compilation.targets(9,5): error MSB4018: System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.CodeAnalysis, V
ersion=3.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. The system cannot find the file specified. [C:\src\Foo\src
\CodeAnalysis\src\Foo.CodeAnalysis\Foo.CodeAnalysis.csproj]

Foo.CodeAnalysis.csproj

    ...
   <ItemGroup>
        <PackageReference Include="Microsoft.CodeAnalysis.Analyzers" />
        <PackageReference Include="Microsoft.CodeAnalysis.CSharp" />
        <PackageReference Include="NETStandard.Library" />
    </ItemGroup>
    ...

Directory.Build.props

  <ItemGroup Condition="'$(MSBuildProjectName)'!='Foo.CodeAnalysis' AND '$(MSBuildProjectName)'!='Foo.CodeAnalysis.Test'">
    <ProjectReference Include="$(MSBuildThisFileDirectory)\CodeAnalysis\src\Foo.CodeAnalysis\Foo.CodeAnalysis.csproj"
                      PrivateAssets="all"
                      ReferenceOutputAssembly="false"
                      OutputItemType="Analyzer"/>
  </ItemGroup>

Directory.Packages.props

   ...
  <ItemGroup >
    <GlobalPackageReference Include="Microsoft.MSBuildCache.SharedCompilation" Version="0.1.318-preview" />
    <GlobalPackageReference Include="Microsoft.MSBuildCache.Local" Version="0.1.318-preview" />
  </ItemGroup>
   ...
    <PackageVersion Include="Microsoft.CodeAnalysis.BannedApiAnalyzers" Version="3.3.4" />
    <PackageVersion Include="Microsoft.CodeAnalysis.Common" Version="4.0.1" />
    <PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="4.0.1" />
    <PackageVersion Include="Microsoft.CodeAnalysis.CSharp.Features" Version="4.0.1" />
    <PackageVersion Include="Microsoft.CodeAnalysis.CSharp.Scripting" Version="4.0.1" />
    <PackageVersion Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="4.0.1" />
    <PackageVersion Include="Microsoft.CodeAnalysis.CSharp.Analyzer.Testing.NUnit" Version="1.1.1" />
    <PackageVersion Include="Microsoft.CodeAnalysis.CSharp.CodeFix.Testing.NUnit" Version="1.1.1" />
    <PackageVersion Include="Microsoft.CodeAnalysis.CSharp.CodeFix.Testing" Version="1.1.1" />
    <PackageVersion Include="Microsoft.CodeAnalysis.CSharp.SourceGenerators.Testing" Version="1.1.1" />
    <PackageVersion Include="Microsoft.CodeAnalysis.Features" Version="4.0.1" />
    <PackageVersion Include="Microsoft.CodeAnalysis.NetAnalyzers" Version="8.0.0" />
    <PackageVersion Include="Microsoft.CodeAnalysis.Scripting.Common" Version="4.0.1" />
    <PackageVersion Include="Microsoft.CodeAnalysis.Workspaces.Common" Version="4.0.1" />
...
主要言語
C#
スター
64
フォーク
24
平均マージ
1日 14時間
マージ済み PR(30日)
2

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

microsoft/MSBuildCache のほかの issue

microsoft/MSBuildCache の issue をすべて見る

似ている issue

C# の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。