我的解决方案中有3个项目和一堆第三方或公司的dll文件。每次我重建我的项目或清理解决方案时,很多这些dll文件都会被删除,因此无法使用。在重新构建后不断引用这些dll文件非常令人烦恼。有人能说明如何避免这种情况吗?提前感谢。
bin
文件夹只是构建输出的二进制文件,因此当您清理解决方案时,bin
文件夹中的所有程序集都会被删除。您应该从其他位置引用这些程序集。其中一个建议是在项目中创建一个名为Shared Resources
的文件夹,将程序集复制到该文件夹中,然后从该文件夹引用它们。这样,在清理/重建时它们就不会从bin
中删除,并且Visual Studio会根据需要将它们复制到那里。
References
文件夹,选择Add Reference...
bin
文件夹)Properties
Copy Local
属性设置为True
这将确保每次构建时都将程序集复制到您的bin
文件夹中。
bin
文件夹将被清空。在解决方案级别上没有bin
文件夹,因此当您清理解决方案时,它将清空该解决方案中所有项目的bin
文件夹。我认为Visual Studio有一些特殊规则来确定执行清理时哪些文件/文件夹会被删除,因此可能会有一些文件残留。但重要的是,bin
文件夹是构建的输出,您不希望手动从那里复制/引用程序集... - Troy Carlson正如Troy在他的回答中所解释的那样,确实引用了位于bin
文件夹外的*.dll
文件可以确保当清理项目时不会彻底删除dll文件。
但是,仅添加对程序集的引用可能不足够。例如,对于某些其他文件类型,例如*.pdb
文件以及*.resources.dll
文件(通常分散在以语言代码(2个字母的语言代码)命名的许多子文件夹中),这种方法不适用。
为了用一个现实生活中的情况来描述这个问题,我选择了一个源代码已经丢失或者不再兼容等问题的程序集。我特意选了一个由许多组件文件组成的13年前的AjaxControlToolkit。下面的图片说明了它的组成。每次将“清理”命令应用于项目时,除了被引用的程序集之外,所有这些文件都会被删除。此外,在同一项目内从“引用”中添加每个具有相同名称的*.resources.dll
文件程序集非常不方便,甚至是不可能的。
然而,这里有一个相当简单的解决方法:
bin
文件夹中,例如xcopy "$(SolutionDir)AjaxControlToolkit" "$(TargetDir)" /y /i /s /r /q
bin
文件夹了。 - Habib