依赖项未复制到 bin 文件夹

21

我使用Visual Studio 2017创建了一个新的网站,该网站的目标框架是NetCoreApp 1.1。由于这是一个MVC项目,因此它引用了来自Nuget的许多Microsoft和第三方dll文件。我还创建了一个数据项目作为库,它是Netstandard1.6。当我构建解决方案时,没有从Nuget包中复制任何dll到bin文件夹中。这会导致在尝试调试应用程序时出现FileNotFound异常。项目引用已正确复制,因此似乎只是与Nuget包有关的问题。作为解决方法,我可以发布该项目并将其输出复制到bin文件夹中,但我不应该这样做,对吗?

2个回答

38
.NET Core使用生成的.deps.json文件来解析程序集,从而避免在构建期间不必要地复制文件到输出目录。
然而,如果某些程序集尝试在输出目录中查找其他程序集或无法访问deps.json文件中引用的文件(例如在IIS中测试构建输出),您可以将以下内容添加到<PropertyGroup>元素中的csproj文件中,以使NuGet程序集被复制到输出目录:
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>

1
运行得很好。谢谢! - DrewB
@pantonis 描述已经说明了将其添加到 PropertyGroup 中。 - Martin Ullrich
@MartinUllrich运行得非常好 - Gowrav

1
这个“CopyLocalLockFileAssemblies”在我的环境中没有任何作用。我发现获取输出中“runtime”文件夹的内容的唯一方法是使用“发布”。这不是本地调试应用程序的解决方案。
编辑: 将Runtime标识符添加到项目文件似乎对我有用。 此外,.NET Core 3.0修复了这个问题,但只在预览版中可用。

2
这似乎不是对OP问题的答案。 - Swifty
3
无法评论 :) 我只想说CopyLocalLockFileAssemblies基本上是有问题的。 - Julien Debache

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