[英]WARNING: Could not resolve this reference. Could not locate the assembly "PackageName". Check to make sure the assembly exists on disk
[英]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.