DotNet Core应用程序2.1 - 无法添加DLL引用

9
我有一个DotNetCore 2.1 Web应用程序(今天刚从VS 2017脚手架创建)。此解决方案还包括一个DotNet Core 2.1库DLL项目。该解决方案构建正常。
我有另一个(全新的)DotNetCore 2.1 Web应用程序,想要使用Library DLL。但是当我尝试添加新引用(在浏览选项卡上)时,它会报错:
“发生一个或多个错误。 参考无效或不受支持。”
有什么建议吗?
(奇怪的是,与经典.NET不同,该DLL不会直接显示在Bin \ Debug文件夹下;它位于Bin \ Debug \ netcoreapp2.1下)

这个dll文件被标记为None还是Content构建操作?在csproj文件中是否有与该dll文件相关的条目? - Martin Ullrich
不行,DLL在引用项目中不存在。我试图将外部DLL添加到我的项目引用中,但它就是不行。一些谷歌搜索显示这种问题似乎影响了DotNet Core库... - Bob.at.Indigo.Health
6个回答

15

我在将一些代码存储库移动后遇到了这个错误,突然我的.NET Core 2.1控制台应用程序在添加一个.NET 4.5 DLL时无法识别它。

事实证明,虽然断开的引用在解决方案资源管理器中没有显示出来,但项目文件仍然包含它,以及指向DLL旧位置的现在已经损坏的HintPath。手动从项目文件中删除此引用可以解决问题。


1
这就是问题所在。我编辑了项目,删除了该部分,并重新添加了引用,没有出现任何问题。 - TheLegendaryCopyCoder

8
进入你的.csproj文件,确保<Reference Include=...指向正确的目录。
例如,我的引用是指向另一个项目的bin\Debug路径,而实际存在的构建只有bin\Release

5

当您从Visual Studio 2017的Class Library(.NET Core)模板创建新项目时,csproj文件包含:

<TargetFramework>netcoreapp2.1</TargetFramework>

由于这是一个库,它(显然)需要针对netstandard2.0进行定位。(顺便说一句,使用dotnet命令从命令行创建库项目会正确地针对netstandard2.0进行定位。)

因此,将库的csproj文件中的该行更改为:

<TargetFramework>netstandard2.0</TargetFramework>

重新构建库现在允许我从DotNet Core 2.1 (netcoreapp2.1)应用程序中引用该库。

1
但总的来说,像这样添加引用是不必要的。.NET Core类库项目可以直接生成NuGet包,然后您可以添加包引用(解决所有依赖项)。 - Lex Li
1
但是,如果这是一个第三方库,并且您无法控制它如何编译,那么该怎么办呢? - AnKing
整个帖子的重点是我的解决方案包含(1)我的应用程序项目和(2)一个通用库项目。在这个解决方案的上下文中,我正在处理这两个项目。请注意,原帖中说我正在使用项目引用,而不是 DLL 引用。这样做的整个目的是在一个 VS 解决方案中同时开发应用程序和库。潜在的问题是,VS 模板代码错误地设置了库的 csproj 文件。 - Bob.at.Indigo.Health
1
@AnKing 如果你得到了一个第三方库,而且它没有正确构建,那么我的猜测是除非你能让库的作者来修复它,否则你就卡住了。我想有办法可以解决这种不兼容性,但这将是另一个SO问题的主题。祝你好运! - Bob.at.Indigo.Health
在我的情况下,将目标框架从netcore6.0更改为net6.0后,它起作用了。在较新的版本中,名称是错误的。 - undefined

2
我正在将许多项目转换为.NET 6,并且其中一个项目突然拒绝让我添加.dll文件。 解决方案是首先删除旧引用,然后再添加新引用。 (该项目具有对旧.dll文件的引用,其名称与新转换的.dll文件相同。)
通常情况下,Visual Studio允许我添加具有相同名称但不同路径的两个dll文件,因此稍后可以删除旧文件,但在这种特殊情况下,这种方法并不奏效。 屏幕截图和画图软件帮助我记忆!

1

我的情况是有重复的.dll文件的引用。在删除重复项并将引用更改为不同的文件夹后,出现了上述错误。清理objbin文件夹并删除根目录下的.vs文件夹有所帮助。


0

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