【问题标题】:Publishing Component with Dependency via NuGet and the Designer Toolbar通过 NuGet 和设计器工具栏发布具有依赖关系的组件
【发布时间】:2017-10-09 10:58:57
【问题描述】:

我有一个开源的 Windows 窗体控件,每个人都可以通过 NuGet 使用它,但是,这个控件依赖于我的其他库之一来处理动画。

现在的问题是用户在添加 NuGet 包后将看不到工具箱中的控件,事实上,他们甚至无法手动添加控件,因为它依赖于另一个库以及两个库的事实位于不同的文件夹中。

所以问题是,有没有更好的方法从 NuGet 包向工具栏添加控件?至于现在,他们需要编译他们的项目一次,然后将库从/bin/Debug/bin/Release 文件夹添加到工具栏。


有问题的图书馆是:

https://github.com/falahati/CircularProgressBar

【问题讨论】:

  • 相关:stackoverflow.com/questions/37672233/… stackoverflow.com/a/29060299/495455 这表明您必须手动完成:forum.patagames.com/posts/… 我找到了 WPF 和 UWP 控件而不是 WinForms 的文章。
  • 如果组件没有依赖,添加过程是ok的。但是,似乎 NuGet 不是为处理这些依赖项场景而构建的,并且设计器工具栏实际上并没有遵循对项目的添加引用,因此,它无法像其他库一样将控件添加到工具栏下载的 NuGet 包旁边没有。我想知道 NuGet 是否提供另一种将依赖库放在主库旁边的方法。

标签: c# nuget toolbar designer


【解决方案1】:

似乎 NuGet 不是为处理这些依赖关系场景而构建的,并且 Designer Toolbox 实际上并没有遵循添加的对项目的引用,因此它无法将控件添加到工具箱中。

鉴于依赖项导致问题的情况,它似乎是设计使然(或不受支持)。

我想知道 NuGet 是否提供另一种将依赖库放在主库旁边的方法。

您是否尝试通过将 2 个程序集合并在一起来解决这个问题。来自 Microsoft 的工具 ILMerge 允许您这样做。在这里,我们将 Primary.dll Secondary.dll (等)合并到 Merged.dll 中,并在合并后添加一个 log.txt。

ilmerge /log:log.txt /out:Merged.dll Primary.dll Secondary.dll 

【讨论】:

  • 好吧,我没有尝试过,但是有一个很好的理由,如果用户也想在他的项目中使用其他库会发生什么?那么我们就会有重复引用的问题。这是否可以更改命名空间或使用 ilmerge 使所有类成为内部类?所以我可以合并图书馆的内部副本?
  • 尝试在合并的程序集上使用 ILSpy 并保存为 c# 项目。
  • 我接受了您的回答,但是,我可能会保持原样并要求用户将库添加到工具栏。这只会让一切变得不必要地复杂。
猜你喜欢
  • 2014-07-11
  • 1970-01-01
  • 2016-10-16
  • 1970-01-01
  • 1970-01-01
  • 2016-08-20
  • 1970-01-01
  • 2017-03-31
  • 1970-01-01
相关资源
最近更新 更多