繁体   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