68

每次构建解决方案时,都会收到以下错误消息:

警告

3

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

标准类库

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

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

4

13 回答 13

83

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

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

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

于 2013-01-10T15:46:01.883 回答
28

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

Update-Package -reinstall 
于 2017-10-27T07:45:22.147 回答
5

如果你用 Docker 构建了一个镜像,你会收到这些奇怪的消息:

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

打开受影响的项目Utilities/Utilities.csproj,(你应该寻找你的项目)。您可能需要先从菜单中选择 Unload Project。右键单击 .csproj 文件并进行编辑。

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

保存,然后重试。

在此处输入图像描述

在此处输入图像描述

于 2019-02-13T04:55:01.847 回答
2

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

于 2016-03-30T17:15:45.360 回答
2

如果项目通过 Team Foundation Server 签出到不同的 PC,同一个库文件的不同位置,Reference 中不会有黄色图标标记,但是当更改为 Release build 和 build 项目时,会报错。就像@C.Evenhuis所说的那样,它将使用以前构建中的旧版本(例如:调试构建),所以我没有注意到错误。

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

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

于 2016-06-01T05:24:28.443 回答
1

我在 VS 2017 中遇到了同样的警告。在我的情况下,我添加了一个单元测试项目,并且需要为它正在测试的 DLL 上的单元测试设置依赖项。

于 2017-07-07T18:23:22.943 回答
1

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

    <ProjectReference Include="..\MyDependency1.csproj">
      <Project>{9A2D95B3-63B0-4D53-91F1-5EFB99B22FE8}</Project>
      <Name>MyDependency1</Name>
    </ProjectReference>
于 2018-08-23T13:07:15.037 回答
1

在 2020 年,这种行为仍然存在于 VS2019 中。(即使我从 VS2019 的解决方案资源管理器中清理项目,这也不能解决问题)

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

于 2020-04-26T21:15:22.617 回答
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> 
于 2020-08-09T15:18:14.363 回答
1

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

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

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

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

于 2020-08-28T13:19:21.707 回答
0

这让我困惑了一段时间,直到我发现解决方案中各个项目的依赖关系已经搞砸了。直截了当,您的组件自然会出现在正确的位置。

于 2016-05-03T19:14:21.110 回答
0

就我而言,这是因为 .net 框架版本与 MySQL 连接器库不匹配。当我更新我的 .NET 版本时,一切都很顺利。 http://net-informations.com/q/faq/mysql.html#:~:text=Add%20Reference,Library%20in%20your%20C%23%20project

于 2020-06-22T18:14:49.023 回答
0

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

从配置中删除-dlsym:false后,我的问题得到了解决。

于 2020-08-20T05:51:21.460 回答