[英]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.