【问题标题】:How to correctly deal with references in custom controls如何正确处理自定义控件中的引用
【发布时间】:2012-06-03 22:58:23
【问题描述】:

我使用 c# 构建了一个导出两个自定义控件的类库。这个类库依赖于一些引用,只要我只添加控件 DLL 作为引用,这些引用就会在构建时被适当地复制到 bin\Debug 目录中(使用自定义控件的解决方案)。到目前为止,一切顺利。

如果我现在将该输出目录中的控件添加到工具箱中,并将其放置在设计器中的一个空窗体上,Visual Studio 就会崩溃。如果我像http://msdn.microsoft.com/en-us/library/5ytx0z24(VS.80).aspx 这样从自定义控件解决方案进行调试,我可以看到找不到引用的 DLL 之一的 IO 异常。

那么,有没有一种相当优雅的方式来放置依赖项,以便设计者 找到它们?我尝试在项目设置中摆弄参考路径,但无济于事。每次更改一些代码时,我宁愿避免设置系统范围的路径和安装/注册控件。

【问题讨论】:

  • 你能告诉我哪个 dll 找不到吗?你明确添加的dll?
  • 我的自定义控件引用的 DLL 之一找不到。这些 DLL 不会显式出现在引用列表中,但会在构建时复制到 bin 目录中,因为 Visual Studio 会检测到这些依赖项。即使将它们全部添加到项目引用中也无助于设计者找到它们。
  • 添加到引用后,您是否在页面上明确调用它?
  • 什么意思?哪一页?顺便说一句,如果我以编程方式添加控件,它在运行我的应用程序时可以正常工作。
  • 如果我没有误解,当您在另一个命名空间中添加自定义控件/引用时,它不起作用,对吧?它有几个原因..1-)您在调试时同时使用混淆和代码优化选项 2-)您没有将 dll 引用设置为 copyLocale 选项 3-)您没有从引用列表中调用您的 dll 和/或在您要使用控件的形式中,明确 4-)您的 dll 或主项目的一个或多个部分未签名,而另一部分已签名..请检查这些并让我知道..顺便说一句,如果你不写你的错误或错误代码没有人可以帮助你作为一个点..

标签: c# .net winforms visual-studio-2010 custom-controls


【解决方案1】:

为什么不直接引用整个项目而不是手动复制到 dll 中?如果您对此有充分的理由,那很好,但似乎您在问一个不需要问的问题! :P

【讨论】:

  • 不错的尝试,但这个问题确实需要问,因为将项目包含在解决方案中然后引用它没有帮助。找不到的dll,如上所述,是被引用项目的引用。不,使用自定义组件将缺少的引用明确添加到项目中没有帮助。还是找不到dll,抛出IO异常。
  • 好的,所以您是说添加对项目输出而不是 DLL 的引用不起作用?这很奇怪......事件比找不到DLL更奇怪!你有没有机会把一个有同样问题的项目放到网上?如果您向我们提供(非)工作示例,我们可能会提供更多帮助!
  • 我再说一遍,我们谈论的是嵌套引用。引用项目或dll可以正常工作,但是找不到被引用项目所引用的东西。
  • @Keiichi - 所以让我确认一下。 ProjectA 引用 ProjectB,ProjectB 具有对 DLL 的引用,但是当您从 ProjectA 调用 ProjectB 中需要 DLL 的方法(或类似方法)时,它会失败吗?如果是这种情况(你已经说过你已经正确设置了 CopyLocal),那么为什么不能创建一个设置相同的示例项目(项目 A -> 项目 B -> DLL)并让我们看到它帮你?如果我们有一些事情要处理,那将需要两分钟!另外,没有必要因为不清楚而不得不重新措辞而粗鲁,我只是想帮忙!
猜你喜欢
  • 2017-02-24
  • 2011-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-13
  • 2018-05-23
相关资源
最近更新 更多