Visual Studio项目将依赖关系从引用的项目复制到输出中

是否可以使Visual Studio将引用项目的所有依赖项复制到输出路径中?

在解决方案中,项目A(库,.NET标准)定义了一些功能,并且依赖于库L1(通过NuGet)和库L2(本地.dll,引用并复制到项目)

项目B(控制台应用程序)引用项目A。

构建B时,输出文件夹包含B和的所有直接依赖项A.dllL1和L2在输出中不可用。因此,该程序无法正常运行。

如何强制VS将L1和L2也复制到B的输出?

到目前为止,我发现的唯一方法是将A打包为NuGet,但这似乎是不必要的开销且不舒服。我想我只是忘记了其他人似乎都知道的东西。

编辑(清除示例)

我的解决方案包括两个项目。

项目MongoWrapper

  • .NET Standard 2.0类库
  • 取决于NuGet MongoDB.Driver软件包
  • 实际使用此依赖关系(无僵尸依赖关系)

项目控制台用户

  • .Net Framework 4.6.1控制台应用程序
  • 参考MongoWrapper项目
  • 实际使用MongoWrapper

观察

在调试ConsoleUser应用程序时,它将编译并启动。在运行时,当它调用MongoWrapper其中使用MongoDB.Driver的方法时,应用程序崩溃,因为未将MongoDB.Driver依赖项复制到的输出文件夹中ConsoleUser

如何解决这个问题?

通过使用.Net标准库和.Net Framework应用程序引入了此问题。

TLDR

.csproj使用文本编辑器打开.Net Framework项目的文件。在第一PropertyGroup添加行

<RestoreProjectStyle>PackageReference</RestoreProjectStyle>

保存文件,在Visual Studio中重新打开解决方案并执行“清理和构建”

不同项目文件版本中的依赖关系

.Net Framework项目使用.csproj项目文件的旧版本引用/依赖项存储在附加packages.config文件中。默认情况下,构建.Net Framework项目会使系统packages.config在引用的项目中搜索文件。如果找不到这样的文件,则构建任务会将引用的项目视为没有依赖项。因此,在示例中,未添加MongoDB.Driver库。

通过在.csproj项目文件中添加建议的行,构建任务将在引用的项目的项目文件中搜索依赖项,并将其存储在.Net Standard项目文件中。

默认情况下,.Net Core项目搜索较新的项目文件结构。

可以在选项-> NuGet->常规->程序包管理中设置新项目的默认行为。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Visual Studio复制项目

Visual Studio / MSBuild将引用的类库的app.config作为* .dll.config复制到当前项目的bin文件夹中

Visual Studio扩展-设置“复制到输出目录”属性

Visual Studio 2017 C ++项目将文本文件复制到输出目录

复制到Visual Studio 2017中的输出目录

Visual Studio-将用户控件复制到新项目

Visual Studio,将文件复制到项目目录问题

项目引用的依存关系未复制到输出文件夹中

如何在构建时将文件从Visual Studio项目复制到UWP应用程序的LocalFolder

将项目升级到Visual Studio 2019的问题

Visual Studio将项目文件夹复制到输出目录(WPF解决方案)

Visual Studio中的灵活项目引用

CMake-Visual Studio项目依赖项

复制的项目错误Visual Studio 2012

将projectname.dll文件从我的Visual Studio项目复制到IIS bin文件夹中是正确的

将已安装的扩展程序从Visual Studio 2012复制到Visual Studio 2013

在Visual Studio中的小型团队中工作的项目引用?

CMake Visual Studio项目依赖项

将开放的XML引用添加到Visual Studio项目

Visual Studio复制依赖项目

在Visual Studio中,如何将“全屏”图标复制到工具栏?

在Visual Studio 2013中向您自己的DLL项目添加依赖项/引用

在添加引用Visual Studio中未显示项目

Vsts(原 Visual Studio Online)复制项目

将 Visual Studio 2017 多项目 VSIX 发布到市场

禁用 MS Visual Studio 项目依赖项

依赖于 CMake 中的 Visual Studio 项目

Visual Studio 2019 未将更改和编译的 dll 复制到 x64 目标中的启动项目的 bin 文件夹

将 SSIS 项目/包从 Visual Studio 2017 复制到 2008(部分轻松接受)