警告:不能将项目“<项目>”中的依赖项“<文件>”复制到运行目录,因为它将改写引用“<文件>”。
依赖项之间存在冲突;为使应用程序运行,应将多个具有相同名称的不同的程序集文件复制到 bin 目录中。 由于其中一个依赖项是主引用,因此运行目录能够解决该冲突。
双击该任务列表项会将您带到正发生冲突的主引用节点。
当具有依赖项冲突,但是已经通过将其中一个冲突依赖项添加为引用而解决此冲突时,发生该警告。 或者,您可能已具有版本 1 引用,然后再添加第二个引用,该引用本身又引用第一个引用的版本 2。
也就是说,此错误的发生是因为解决方案中的项目之间相互引用,但这些引用被创建为文件引用(使用添加引用对话框中的**“浏览”按钮),而不是项目到项目的引用(使用“添加引用”对话框上的“项目”**选项卡)。 项目到项目的引用的好处在于,它在生成系统中创建了项目之间的依赖项,因而如果从上次生成引用项目之后依赖项目发生了更改,就将生成该依赖项目。 文件引用则不建立版本的依赖关系,因此有可能生成了引用项目而没有生成依赖项目,于是引用会变得过时;一个项目能引用该项目以前生成的版本。 这会导致在 bin 目录中要求的单个 DLL 有几个版本,这是不可能的,因此就会出现此错误信息。
每当在 bin 目录中出现冲突并且应用程序不能正确工作时,就出现此消息。 即使解决了此问题,该警告仍然会出现,因为项目系统不能确定依赖项的版本是否能与所有组件一起正确工作。
更正此错误
- 将一个(或零个)程序集文件复制到 bin 目录中,这可以通过将这些程序集文件放置于全局程序集缓存中来实现。 全局程序集缓存将解决文件名冲突问题。 由于公共语言运行时知道如何查找全局程序集缓存中的程序集,因此将不会生成程序集文件的本地副本。 有关更多信息,请参见 使用程序集和全局程序集缓存 和 错误:不能将项目“<项目>”中的依赖项“<文件>”复制到运行目录,因为它将与依赖项“<文件>”冲突。