簡體   English   中英

無法解析此引用。 找不到程序集

[英]Could not resolve this reference. Could not locate the assembly

每次我構建解決方案時,都會收到此錯誤消息:

警告

3個

無法解析此引用。 找不到程序集“StandardClassLibrary,Version=1.0.0.0,Culture=neutral,processorArchitecture=MSIL”。 檢查以確保程序集存在於磁盤上。 如果您的代碼需要此引用,您可能會遇到編譯錯誤。

標准類庫

所以我的應用程序有許多項目,其中StandardClassLibrary是其中之一。 上面的消息是一個警告,據我所知,它對我的解決方案沒有影響。

但我寧願它不在那里,以防萬一......

當項目指向不再存在的程序集的舊位置時,您很可能會收到此消息。 由於您能夠構建它一次,因此該程序集已被復制到您的bin\Debug / bin\Release文件夾中,因此您的項目仍然可以找到一個副本。

如果您在解決方案資源管理器中打開項目的引用節點,則引用旁邊應該有一個黃色圖標。 刪除引用並從正確的位置再次添加它。

如果您想知道它被引用的位置,您必須在文本編輯器中打開 .csproj 文件並查找該程序集的HintPath - 由於某種原因,IDE 不顯示此信息。

如果有人在使用某些nuget包時遇到此問題,您可以通過使用包管理器控制台重新安裝包來解決該問題:

Update-Package -reinstall 

如果您使用 Docker 構建了一個鏡像,並且您收到了這些奇怪的消息:

警告 MSB3245:無法解析此引用。 找不到程序集“Microsoft.Extensions.Configuration.Abstractions”。 檢查以確保程序集存在於磁盤上。 如果您的代碼需要此引用,您可能會遇到編譯錯誤。 [/src/Utilities/Utilities.csproj]

打開受影響的項目Utilities/Utilities.csproj ,(你應該尋找你的項目)。 您可能需要先從菜單中選擇卸載項目。 右鍵單擊 .csproj 文件並進行編輯。

現在,刪除所有<HintPath>標簽

保存,然后重試。

在此處輸入圖像描述

在此處輸入圖像描述

檢查您的項目文件是否為只讀。 通過右鍵單擊項目文件夾並選擇屬性來刪除只讀屬性。 在屬性屏幕中刪除只讀復選框。 我遇到了同樣的問題,這為我解決了。

如果工程通過team foundation server check out到不同的PC,同一個庫文件在不同的位置,Reference中不會有黃色圖標標記,但是當改成Release build構建工程時,會報錯。 就像@C.Evenhuis所說的那樣,它會在以前的構建(例如:調試構建)中使用舊版本,所以我沒有注意到這個錯誤。

現在我知道將庫文件放在不同 PC 的不同位置是一個壞習慣。

只需要刪除引用並從正確的位置重新添加相同的引用。

在 2020 年,這種行為仍然存在於 VS2019 中。 (即使我從 VS2019 的解決方案資源管理器中清理項目,這也不能解決問題)

對我有用的解決方案是打開項目的文件夾,然后手動刪除 \bin 和 \obj 目錄。

我在 VS 2017 中收到了相同的警告。事實證明,在我的案例中,我添加了一個單元測試項目,並且需要為它正在測試的 DLL 上的單元測試設置依賴項。

也許它會對某人有所幫助,但有時引用可能缺少名稱標簽,這會導致在使用 MSBuild 構建時找不到程序集。 確保Name標簽可用於特定參考 csproj 文件,例如,

    <ProjectReference Include="..\MyDependency1.csproj">
      <Project>{9A2D95B3-63B0-4D53-91F1-5EFB99B22FE8}</Project>
      <Name>MyDependency1</Name>
    </ProjectReference>

VS mac 更新后我遇到了這個問題。 iOS SDK 已更新。 我指的是項目文件夾中的 ios dll。 hintpath中的版本號已更改。

早些時候:

<Reference Include="Xamarin.iOS">   
     <HintPath>..\..\..\..\..\..\..\..\Library\Frameworks\Xamarin.iOS.framework\Versions\13.18.2.1\lib\mono\Xamarin.iOS\Xamarin.iOS.dll</HintPath>
    </Reference>
    <Reference Include="Xamarin.iOS">
      <HintPath>..\..\..\..\..\..\..\Library\Frameworks\Xamarin.iOS.framework\Versions\13.18.1.31\lib\mono\Xamarin.iOS\Xamarin.iOS.dll</HintPath>
    </Reference>
    <Reference Include="Xamarin.iOS">          <HintPath>..\..\..\..\..\..\..\Library\Frameworks\Xamarin.iOS.framework\Versions\13.18.3.2\lib\mono\Xamarin.iOS\Xamarin.iOS.dll</HintPath>
    </Reference>

我參考了上一次提交中的數字,只更改了項目文件夾中的數字,在 android、ios 文件夾中什么也沒做。 為我工作!

現在:

<Reference Include="Xamarin.iOS">                                                            
 <HintPath>..\..\..\..\..\..\..\..\Library\Frameworks\Xamarin.iOS.framework\Versions\13.20.2.2\lib\mono\Xamarin.iOS\Xamarin.iOS.dll</HintPath>
        </Reference> 

就我而言,我收到以下警告:

無法解析此引用。 找不到程序集“x”。 檢查以確保程序集存在於磁盤上。 如果您的代碼需要此引用,您可能會遇到編譯錯誤。

無法解決“x,Version=1.0.0.248,Culture=neutral,PublicKeyToken=null”和“x”之間的沖突。 選擇“x,版本=1.0.0.248

dll 的路徑在 my.csproj 文件中是正確的,但我引用了兩次,第二次引用是另一個版本。 一旦我刪除了不必要的參考,警告就消失了。

這讓我困惑了一段時間,直到我弄清楚解決方案中各個項目的依賴關系已經搞砸了。 弄清楚這一點,您的裝配體自然會出現在正確的位置。

就我而言,這是因為 .net 框架版本與 MySQL 連接器庫不匹配。 當我更新我的 .NET 版本時,一切都很順利。 http://net-informations.com/q/faq/mysql.html#:~:text=Add%20Reference,Library%20in%20your%20C%23%20project

在將 NuGet 包添加到 iOS 項目(在 Xamarin 表單項目中)時,我遇到了類似的鏈接器問題。 我們之前在構建配置中提供了額外的 mtouch 參數,例如-dlsym:false -cxx -v -v -v -v -gcc_flags

從配置中刪除-dlsym:false后,問題就解決了。

暫無
暫無

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

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