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

77
每次我构建我的解决方案时,都会出现以下错误消息:

警告

3

无法解析此引用。找不到程序集 "StandardClassLibrary, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL"。请确保磁盘上存在该程序集。如果您的代码需要此引用,则可能会出现编译错误。

StandardClassLibrary

因此,我的应用程序有多个项目,其中一个是“StandardClassLibrary”。上述消息是一条警告,并且据我所知,它对我的解决方案没有影响。
但是为了以防万一,最好不要出现这种问题...

1
编写一个测试,以测试程序集中方法的功能。在启动时运行该测试,并确保所有结果都符合预期,以确保正确性(而不仅仅是尽可能地检查)。 - Kcvin
在VS2019中,项目引用中删除黄色标记的项,并从NuGet包管理器重新安装它们有助于解决此问题。 - WaterRocket8236
13个回答

89

当项目指向一个旧的程序集位置而该程序集已不存在时,您很可能会收到此消息。由于您曾经能够构建它,因此程序集已经被复制到您的 bin\Debug / bin\Release 文件夹中,所以您的项目仍然可以找到该程序集的副本。

如果您在解决方案浏览器中打开项目的引用节点,则应该会看到引用旁边有一个黄色图标。请删除该引用,并从正确的位置再次添加它。

如果您想知道它被引用的位置,则需要在文本编辑器中打开 .csproj 文件,并查找该程序集的 HintPath - 由于某种原因,IDE 并不显示此信息。


6
谢谢您的反馈。我已经检查了我的参考资料,它们都没有问题,没有黄色图标。 - arame3333
1
谢谢,它可以工作了!我在引用中没有黄色图标,但我将所有的dll从debug文件夹复制到release文件夹中,现在它可以工作了。 - Muflix
我曾经遇到过黄色三角形的问题,但不清楚原因。你的答案帮助我发现它在错误的位置寻找版本。 - Mocas

33
如果有人遇到某些 nuget 包的问题,可以通过使用包管理器控制台重新安装这些包来解决。
Update-Package -reinstall 

7
如果您使用Docker构建了一个镜像,并且收到以下奇怪的消息:

警告MSB3245:无法解析此引用。无法找到程序集“Microsoft.Extensions.Configuration.Abstractions”。请检查程序集是否存在于磁盘上。如果您的代码需要此引用,则可能会出现编译错误。[/src/Utilities/Utilities.csproj]

打开受影响的项目Utilities/Utilities.csproj,(您应该寻找您的项目)。您可能需要先从菜单中选择“卸载项目”。右键单击.csproj文件并进行编辑。
现在,删除所有的<HintPath>标签 保存,然后再试一次。

enter image description here

enter image description here


3
在2020年,这种行为仍然存在于VS2019中。 (即使我在VS2019的解决方案资源管理器中清理项目,这也无法解决问题)
对我有效的解决方案是打开项目文件夹,并手动删除\bin和\obj目录。

我在新工作站上进行了全新的16.11.16安装,遇到了这个问题。文件按预期保存在提示路径中,但运行不成功。以下方法对我很有帮助。 - MikeJ

2

检查您的项目文件是否为只读。右键单击项目文件夹并选择属性,取消“只读”属性。在属性屏幕上,取消“只读”复选框。我曾遇到同样的问题,这个方法对我有用。


2
如果通过团队基础设施服务器将项目检出到不同位置的不同电脑上,引用中将没有黄色图标标记,但当切换到发布版本并构建项目时,会出现错误。就像@C.Evenhuis所说,在以前的构建中(例如Debug构建),它将使用旧的库文件,因此我没有注意到错误。
现在我知道了在不同电脑上的不同位置放置库文件是一个坏习惯。
只需要删除引用,然后从正确位置重新添加相同的引用即可。

1
也许它能帮助某些人,但是有时候引用可能会缺少名称标签,这会导致使用MSBuild构建时无法找到程序集。 确保特定引用csproj文件中有Name标签,例如,
    <ProjectReference Include="..\MyDependency1.csproj">
      <Project>{9A2D95B3-63B0-4D53-91F1-5EFB99B22FE8}</Project>
      <Name>MyDependency1</Name>
    </ProjectReference>

1
我在VS 2017中也遇到了同样的警告。事实证明,在我的情况下,我添加了一个单元测试项目,并需要将该单元测试设置为依赖于它所测试的DLL。

1

我在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> 

1
在我的情况下,我收到了以下警告:

无法解析此引用。无法找到程序集“x”。请确保磁盘上存在该程序集。如果代码需要此引用,则可能会出现编译错误。

无法解决“x,Version = 1.0.0.248,Culture = neutral,PublicKeyToken = null”和“x”之间的冲突。选择“x,Version = 1.0.0.248”

在我的.csproj文件中dll的路径是正确的,但我把它引用了两次,第二个引用是另一个版本。一旦我删除了不必要的引用,警告就消失了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接