簡體   English   中英

添加項目引用后的 System.MissingMethodException(不使用引用)

[英]System.MissingMethodException after adding a project reference (without using the reference)

我遇到了一個我無法解釋的奇怪錯誤。 我有一個 .NET 6 class 庫項目(A),它具有 function:

public async Task ImportDeliveries()
{
    try
    {
        var csvFileProcessor = new CsvFileProcessor();
        await csvFileProcessor.ProcessAllAsync(_DeliveryImporter.ImportAsync).ConfigureAwait(true);
    }
    catch (Exception ex)
    {
        _TelemetryClient.TrackException(ex);
    }
}

它工作正常。 但是,只要我將另一個 .NET 6 class 庫(B)的項目引用添加到項目中,而不更改任何其他內容,function

await csvFileProcessor.ProcessAllAsync(_DeliveryImporter.ImportAsync).ConfigureAwait(true);

失敗並拋出以下異常:

System.MissingMethodException:'找不到方法:'System.Threading.Tasks.Task BlobStorageHelper.BlobStorageFolder.MoveAsync(Microsoft.Azure.Storage.Blob.CloudBlockBlob,BlobStorageHelper.BlobStorageFolder)'。

這可能是因為 (B) 包含某些 nuget 包嗎? 這種行為對我來說非常違反直覺,我不知道從哪里開始尋找。

可能是由以下原因引起的:

  • 您的項目 A 引用了 class 庫 C,其中定義了CsvFileProcessorBlobStorageHelper.BlobStorageFolder (后者也可以是傳遞依賴項 D)。
  • 項目 B 還引用了 class 庫 C(和/或 D),但版本不同
  • 有人在 Z0D61F8370CAD1D412F80ZB84D14 的某些版本中修改、添加或刪除了System.Threading.Tasks.Task BlobStorageHelper.BlobStorageFolder.MoveAsync(Microsoft.Azure.Storage.Blob.CloudBlockBlob, BlobStorageHelper.BlobStorageFolder)
  • 您沒有在 C 或 D 中正確實施語義版本控制,因此 MSBuild 正在恢復不包含所需方法的 C 或 D 版本。

因此錯誤。

要點:更改簽名或返回類型會破壞 ABI(應用程序二進制接口),需要更新主要版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM