一般来说,您永远不会真的想将 bin 文件放入 bin 文件夹中。
如果你做了一个干净的项目(通常可能会这样做),那么 bin 文件就会被清空。如果您需要包含一些附加程序集,请在项目中正确引用它们。然后在构建时,它们将被正确洗牌并正确包含在 bin 文件夹中。
您真的不想将一些 bin 文件放入 bin 文件夹,然后尝试引用这些程序集,因为如上所述,bin 文件夹可以在解决方案的重建过程中被清除。因此,将这些 bin 文件添加为对项目的引用。
另一个问题是在网络发布期间,您可以选择将所有 .dll 文件“合并”到一个程序集中,因此 bin 文件夹再次被视为项目构建的结果输出 - 而不是某个 repostitoty 位置您开始在其中放入 .dll 等。
我似乎有些人试图将 bin 文件放入 bin 文件夹,但你只会遇到问题,因为如前所述,尝试这样做时会出现多个问题。
我的意思是,想想 nuGet 添加?它在项目文件夹中创建一个名为“packages”的文件夹。而且您不会认为此文件夹不会出现在项目文件夹中 - 但您不会开车,因为如果您检查引用,您会看到许多 .dll 引用的 Hodge Podge 将指向该包文件夹。在构建时,.net 和编译过程会确定需要哪些 .dll,然后将它们打乱并放入 bin 文件中。
那么,如果您需要一些 .dll?在项目级别创建一个文件夹,将它们放入,然后将引用添加到您的项目中——它们将被正确链接、解析并在构建时成为您项目的一部分。然后,该构建过程将通过正确引用 bin 文件夹进行复制。
请勿尝试将其设为手动过程。您只需要在项目中添加 + 引用正确的程序集 - 并且 bin 文件夹不是引用此类文件的位置。
我想唯一的例外是如果您的代码在运行时通过说 Assembly.LoadFrom() 加载程序集 (.dll)。
即便如此,您仍然可以在项目中创建一个文件夹(并添加这些文件),并将构建时的副本包含到 bin 文件中。
编辑:
例如,我正在使用 ajax 工具包。所以,在项目探索中我看到了这个:
如果我右键单击 ajaxtool 工具包,显示属性表,我们会看到:
看看那个长长的可怕路径名——绝对 100% 在这个网站之外。但是,通过本地复制,当然在构建过程中,那个 .dll 会被复制到 bin 文件夹中。
上面说的同样适用于 newtonsoft (json),同样,它在网站之外。
因此,那些引用的程序集应该被复制到输出(bin)文件夹中。
但是,您可能使用的是网站而不是网站应用程序。 (你只是打开网站(因此:一个网站)。
或者,
您是否打开一个项目 (sln) 文件,从而拥有一个 asp.net 网站应用程序。 (关键区别在于网站与网站应用程序)。
但是,在这两种情况下,.dll 都应该并且确实在构建期间被复制到输出文件中。但是,如果您只使用一个网站,那么您就没有同样意义上的构建过程。在这种情况下,您可以考虑使用 app_code。
我的意思是,我可以假设将 .dll 放入 bin 中,然后引用它们,但是当你第一次做一个干净的项目时,这会分崩离析——因为 bin 文件夹应该被认为是“临时的”在开发过程中。