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

时间:2013-01-10 15:31:33

标签: c# .net

每次我构建我的解决方案时都会收到此错误消息;

  

警告3无法解析此引用。无法找到   程序集“StandardClassLibrary,Version = 1.0.0.0,Culture = neutral,   processorArchitecture = MSIL“。检查以确保程序集存在   磁盘。如果您的代码需要此引用,您可能会得到   编译错误。 StandardClassLibrary

所以我的应用程序有许多项目StandardClassLibrary是一个。上面的消息是一个警告,据我所知,它对我的​​解决方案没有影响。

但我宁愿不在那里,以防万一......

13 个答案:

答案 0 :(得分:55)

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

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

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

答案 1 :(得分:11)

如果有人在使用某些 nuget 软件包时遇到此问题,您可以使用软件包管理器控制台重新安装软件包来解决此问题:

Update-Package -reinstall 

答案 2 :(得分:2)

检查您的项目文件是否为只读。右键单击项目文件夹并选择属性,删除只读属性。在属性屏幕中,删除只读复选框。我遇到了同样的问题,这解决了我。

答案 3 :(得分:2)

如果项目通过具有相同库文件的不同位置的团队基础服务器签出到不同的PC,则参考中将没有黄色图标标记,但是当更改为发布构建并构建项目时,将给出错误。就像@C.Evenhuis所说的那样,它将在之前的版本中使用旧的版本(例如:Debug build),所以我没有注意到这个错误。

现在我知道将库文件放在不同PC上的不同位置是一个坏习惯。

只需要删除引用并从正确的位置重新添加相同的引用。

答案 4 :(得分:1)

在2020年,此行为在VS2019中仍然存在。 (即使我从VS2019中的解决方案资源管理器中清除了项目,也无法解决问题)

对我有用的解决方案是打开项目的文件夹,然后手动删除\ bin和\ obj目录。

答案 5 :(得分:0)

这让我困惑了一段时间,直到我发现解决方案中各种项目的依赖关系已经搞砸了。直截了当地自然地将您的装配体放在正确的位置。

答案 6 :(得分:0)

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

答案 7 :(得分:0)

也许会帮助某人,但有时Name标记可能缺少参考,这导致使用MSBuild进行构建时找不到程序集。 确保Name标签可用于特定的参考csproj文件,例如

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

答案 8 :(得分:0)

如果您使用Docker构建了映像,并且收到了以下奇怪消息:

  

警告MSB3245:无法解决此引用。找不到   程序集“ Microsoft.Extensions.Configuration.Abstractions”。校验   确保程序集存在于磁盘上。如果这个参考是   代码所要求的,您可能会得到编译错误。   [/src/Utilities/Utilities.csproj]

打开受影响的项目Utilities/Utilities.csproj,(您将寻找您的项目)。右键单击.csproj文件并进行编辑。

现在,删除所有<HintPath>标签

保存,然后重试。

enter image description here

enter image description here

答案 9 :(得分:0)

在我的情况下,这是由于.net框架版本与MySQL连接器库未匹配而发生的。当我更新.NET版本时,一切正常。 http://net-informations.com/q/faq/mysql.html#:~:text=Add%20Reference,Library%20in%20your%20C%23%20project

答案 10 :(得分:0)

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> 

答案 11 :(得分:0)

在将NuGet包添加到iOS项目(在Xamarin表单项目中)时,我遇到了类似的链接程序问题。我们之前在这样的构建配置中提供了附加的mtouch参数 -dlsym:false -cxx -v -v -v -v -gcc_flags

从配置中删除 -dlsym:false 后,问题已为我解决。

答案 12 :(得分:0)

就我而言,我有以下警告:

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

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

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