【问题标题】:How to deploy C# DLL of hidden NuGet dependency automatically when mixing .Net Standard and .Net Framework?混合.Net Standard和.Net Framework时如何自动部署隐藏NuGet依赖的C# DLL?
【发布时间】:2019-09-08 10:27:34
【问题描述】:

我有一个 Visual Studio (2017) C# 解决方案,其结构如下:

  • 解决方案
    • ExeProject
    • DLL 项目
      • NuGet-Dependency to Stateless 包(“Stateless”是包的名称)

DLLProject 将依赖项隐藏在其接口中,即Stateless 库的使用应该是DLLProject 的实现细节。

ExeProject 仅访问DLLProject 的公共接口和工厂。

由于超出此问题范围的原因,ExeProject 针对.Net Framework 4.6.1,而DLLProject 针对.Net Standard 2.0

这编译正常,但调试时,可执行文件找不到Stateless.dll

是否可以在链接 DLLProject 时自动部署该 DLL,而不向 ExeProject 添加 Stateless NuGet 依赖项?

【问题讨论】:

  • 为什么要避免添加 nuget 依赖项?这正是它们的设计目的。
  • @BradleyUffner 可维护性、兼容性、可测试性、接口隔离等。我希望能够更改/切换出/删除有问题的库,而无需修改 ExeProject。在我提供的最小示例中,这并不重要,但手头的实际任务有多个这样的问题。
  • 你能制作 DLLProject .Net Framework 4.6.1 吗?如果它们都在同一个解决方案中,则应该“正常工作”。
  • @mxmissile DLLProject 还用于 .Net Framework 不可用的环境,所以很遗憾,没有。

标签: c# .net nuget


【解决方案1】:

在 .NET Core 中,这种传递 NuGet 依赖项会自动工作。

在 .NET Framework 上,引用库有一个“复制本地”选项。确保为有问题的设置设置为 True。

更新

对于您的情况,.NET Framework App 和 .NET Standard lib,设置需要手动修改 .NET Framework 应用程序的 .csproj 文件。请关注: Copy all dependencies from .Net Standard libraries to .Net Framework Console application

【讨论】:

  • 我的 Exe 项目以 .NET Framework(它专门针对桌面)为目标,而 DLL 以 .Net Standard 为目标。我更新了问题以包含该详细信息。在这种情况下有机会让它自动工作吗?
  • 更新了答案。
猜你喜欢
  • 2020-09-19
  • 1970-01-01
  • 2019-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 2021-05-29
相关资源
最近更新 更多