【问题标题】:Is it Acceptable for Referenced DLLs to reside in the project's \bin\Debug folder?引用的 DLL 是否可以驻留在项目的 \bin\Debug 文件夹中?
【发布时间】:2014-05-13 21:28:10
【问题描述】:

阿莫斯·摩西是个懦夫!与我正在处理的这种 CE / CF Gordian Knotesque 意大利面质量相比,“Rassling”鳄鱼根本算不上什么。

在我最近尝试以某种方式诱使这个大泥球至少编译和运行时,我注意到一些引用的 DLL 存在于项目自己的 \bin\Debug 文件夹中。

这样安全吗?对我来说,这似乎是追尾或循环引用。它似乎可以工作,但是......将这些 DLL 移到其他地方会更好吗?

更新

要清楚,这里是 \bin\Debug 中的内容:

...在\bin\Release:

...以及如何引用 OpenNETCF* DLL:

【问题讨论】:

  • 它们是在构建时复制到那里的,还是原来的实际上在那里?
  • 这就是“路径”属性所指向的。
  • 更糟糕的是,您的主 .EXE 文件可能也在其中!
  • 其实在\bin\Release.事实上,\bin\Release 包含 \bin\Debug 中的 DLL 的超集。
  • 而调试用的 DLL 在 Relase 文件夹中?为了对称?

标签: c# visual-studio dll visual-studio-2003 bin


【解决方案1】:

它似乎可以工作,但是...我将这些 DLL 移到其他地方会更好吗?

一般来说,我不建议将其作为参考位置。将引用的程序集复制到该文件夹是很常见的,但它们应该位于其他位置(并且在 C# 项目文件中引用其他位置的 HintPath)。

【讨论】:

  • 请删除它们! (指向 /bin/$Configuration 的引用/提示路径......这是一种黑客攻击。
【解决方案2】:

清理您的项目不会删除它们,只要它们在源代码管理中,您就不会丢失它们。

在查找和安装第三方库和 SDK 的正确版本时,这曾经是一种做法,很麻烦。当引用的库包含在 bin 文件夹中时,它们只需从源代码管理中检出即可工作,而不必从每个新工作站和用户的任何位置安装二进制文件,在同一位置,以引用它们正确并在构建时复制它们。

可以使用虚拟机或开发机器的磁盘映像解决的问题,或正确归档所述库的安装程序。

这并不意味着 bin 文件夹是正确的位置。我会选择项目目录之外的库或第三方文件夹,最好是版本控制。

现在有了官方 NuGet 包存储和私有包存储,您可以使用它们来共享内部库,这对于新开发来说应该不再是问题。

【讨论】:

  • 新开发!要是!这是一个古老的项目:Visual Studio 2003,必须在 XP 模式下工作...需要我继续吗?不得不为这样的怪物工作几乎是违宪的(残忍和不寻常的惩罚)!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-15
  • 2013-09-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多