web-dev-qa-db-ja.com

Travis-CIビルドエラー「タイプまたはネームスペース名 'Extensions'はネームスペースに存在しません」

Travis-CIはまだ新しく、私がやっていることかどうかを確認したいと考えていました。 Travis-CIでビルドエラーが発生しますが、ローカルでは発生しません。

.NET Core 2.0アプリのサンプル。ビルドを実行すると、次のエラーが表示されます。

エラーCS0234:タイプまたは名前空間名 'Extensions'が名前空間 'Microsoft'に存在しません(アセンブリ参照がありませんか?)

そして

エラーCS0246:タイプまたは名前空間名 'IConfiguration'が見つかりませんでした(usingディレクティブまたはアセンブリ参照がありませんか?)

ここに設定とジョブログへのリンクがあります:

https://travis-ci.org/ovation22/DapperRepository/jobs/27306834

8
ovation22

エラーのすぐ上に警告があります:

/usr/share/dotnet/sdk/2.0.0/Microsoft.Common.CurrentVersion.targets(1987,5):警告MSB3245:この参照を解決できませんでした。アセンブリ「Microsoft.Extensions.Configuration.Abstractions」が見つかりませんでした。アセンブリがディスク上に存在することを確認してください。この参照がコードで必要な場合、コンパイルエラーが発生する可能性があります。 [/home/travis/build/ovation22/DapperRepository/Example.Repository/Example.Repository.csproj]

DapperRepository.cs(7,17):エラーCS0234:タイプまたは名前空間名 'Extensions'が名前空間 'Microsoft'に存在しません(アセンブリ参照がありませんか?)[/ home/travis/build/ovation22/DapperRepository/Example.Repository/Example.Repository.csproj]

DapperRepository.cs(16,33):エラーCS0246:タイプまたは名前空間名 'IConfiguration'が見つかりませんでした(usingディレクティブまたはアセンブリ参照がありませんか?)[/ home/travis/build/ovation22/DapperRepository/Example .Repository/Example.Repository.csproj]

Example.Repository.csproj を見てみましょう:

<ItemGroup>
  <PackageReference Include="Dapper" Version="1.50.2" />
</ItemGroup>

いいですね。しかし、Microsoft.Extensions.Configuration.Abstractionsはどこにありますか?少し低く見てみましょう:

<Reference Include="Microsoft.Extensions.Configuration.Abstractions">
  <HintPath>C:\Program Files\dotnet\sdk\NuGetFallbackFolder\Microsoft.extensions.configuration.abstractions\2.0.0\lib\netstandard2.0\Microsoft.Extensions.Configuration.Abstractions.dll</HintPath>
</Reference>

つまり、msbuildにC:\Program Filesで利用できることを伝えています。 Travisは、このパスが明らかに存在しないLinuxでこれを実行しています。

そのcsprojにPackageReferenceと同じようにDapperを追加してみてください。これで修正されるはずです。

22
Omair Majid