【问题标题】:Copy DLLs dependancy files to Main project将 DLL 依赖文件复制到主项目
【发布时间】:2020-11-12 03:26:28
【问题描述】:

我有一个带有主项目的 Visual Studio 解决方案(Microsoft Visual Studio Professional 2017),它在同一解决方案中使用 DLL 项目中的类。

DLL 是一个“类库(.NET 框架)。

主要项目是(对于我的初步调查)一个控制台应用程序。未来的版本将是 WPF。我认为问题出现在所有使用其他 DLL 的 DLL 的应用程序上。

DLL 使用 Nuget 包中的其他 DLL。在这种情况下:SQLite。我想向我的主项目隐藏我的 DLL 使用 Sqlite。这使得在未来的版本中可以将其更改为不同的数据库,或者可以使用实体框架来访问数据。

所以我的主项目只知道它在同一个解决方案中使用了 DLL。它不知道这个 DLL 使用了其他 DLL。

问题:这些其他 DLL 没有复制到我的主应用程序文件夹中。

之前有人问过这个问题:Copying a DLL's dependencies in Visual Studio 答案说您应该使用 Sqlite 中的类来确保复制 DLL。这正是我想要阻止的:我的 DLL 的用户不必知道这个 DLL 使用 SQLite

这个问题是 11 岁。

我想知道 Visual Studio 现在是否有更好的解决方案。

【问题讨论】:

  • 你的Dll项目和你的主项目类型是什么?,Dll的net标准库项目,主项目的net框架项目?
  • 我编辑了问题并添加了信息
  • 还有一个问题:你用过这个SQLitenuget包和其他dll吗?
  • 我安装了 Nuget System.Data.SQLite,它安装了其他 Nuget 包。如果我的 DLL 使用我自己的 Dll 之一,也会出现此问题。如果我的主项目使用这个其他 Dll 的任何内容,则复制其他 DLL。问题是:我不希望我的主使用任何 SQLite。如果在将来的版本中我放弃 SQLite,我不想更改我的 DLL 的用户
  • 旧的 Net Framework 项目仍然需要一些自定义目标或构建后事件来将依赖项 dll 复制到主项目的输出文件夹中。你应该写一个脚本来实现它。但是在新的sdk格式项目中,dll会自动复制到主项目中。

标签: visual-studio dll nuget


【解决方案1】:

Install and manage packages in Visual Studio using the NuGet Package Manager 中给出了解决问题的方法。不太理想,主项目还是需要知道其他项目使用了某些Nuget包,但至少不用编辑.csproj文件,也不需要输入命令行

  • 我的解决方案
    • 我的主要项目。指 MyDll
    • MyDll。使用 Nuget 包

在 Visual Studio 中。菜单 - 工具 - Nuget 包管理器

打开的窗口显示已安装的 Nuget 包。如果单击它们,您可以在右侧看到使用这些包的项目。

对于您的主程序在运行时抱怨它丢失的所有已安装包,请选中MyMainProject 附近的框。点击底部的安装。

唉,我宁愿在项目MyDll 中有一些东西告诉使用这个DLL 的每个人他们也需要这些Nuget 包。不过暂时还是用这个方法吧。

11年后会再检查是否有任何改善。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-02
    • 1970-01-01
    • 2010-10-30
    • 1970-01-01
    • 2010-10-12
    • 1970-01-01
    相关资源
    最近更新 更多