Visual studio Visual Studio 2017中的引用在引擎盖下方更改
我在一个文件夹中有一堆assemblies.dll。我打开一个项目并添加对这些文件的引用 Et voila',Visual Studio将这些DLL复制到输出文件夹Debug/Release/which中,更改引用,使它们指向那里,并…将原始路径保留到prj文件中 结果:我更新了一个、一些、所有的dll,VisualStudio对此毫不在意,因为它只想使用本地dll。还有,更神奇的是,如果我做了一个重建,先进行清理,然后进行构建,引用不再有效,因为清理删除了复制的文件Visual studio Visual Studio 2017中的引用在引擎盖下方更改,visual-studio,Visual Studio,我在一个文件夹中有一堆assemblies.dll。我打开一个项目并添加对这些文件的引用 Et voila',Visual Studio将这些DLL复制到输出文件夹Debug/Release/which中,更改引用,使它们指向那里,并…将原始路径保留到prj文件中 结果:我更新了一个、一些、所有的dll,VisualStudio对此毫不在意,因为它只想使用本地dll。还有,更神奇的是,如果我做了一个重建,先进行清理,然后进行构建,引用不再有效,因为清理删除了复制的文件 为什么会这样?好吧,我随机
为什么会这样?好吧,我随机找到了答案,这只是一个坏名字的问题 首先,Visual Studio有一个选项“复制本地”:您可能认为将其设置为“否”会起作用,但它不起作用这一点很明显,在您尝试之后,因为如果他不复制输出文件夹中的dll,那么当软件运行时,它将找不到它们,除非我们在GAC中讨论程序集,但那是另一回事 就其本身而言,问题在于VisualStudio应该从原始源复制本地并保留对该源的引用,而不是在输出文件夹中复制一次,然后从那时起在内部更改对输出文件夹的引用。它仍然将原始引用保留在prj文件中,但随后会忽略它们,这样,如果您清理项目或解决方案,就没有更多的dll,并且不再编译
解决方案是什么?标记为特定版本的设置。尽管名称不同,但它并不强制使用您引用的DLL的特定版本,它只是告诉Visual Studio与Copy Local=Yes组合使用的是“始终复制”的等效项。如果您引用的组件是其他VS项目的输出,最好是引用该项目,而不是创建的输出。在任何情况下,您都可以关闭这些引用的“复制本地”查看的属性以指示VS不要将dll复制到您的项目输出文件夹中。引用其他项目这一直是最糟糕的做法:您正在强制整个公司构建网络和代码版本控制系统,以便每个人都可以看到所有内容,另外,您正在Visual Studio中加载数十个或数百个您不需要的项目,这会给您的PC带来负担。复制本地选项不起作用,因为当软件运行时,它找不到dll。Visual Studio应该从原始源复制本地,并保留对该源的引用,并继续复制本地,而不是一次复制本地并在内部更改引用,看起来您只是错过了复制总是:真正的选项,强制VS在每个构建上拉DLL,但是没有办法指示VS在每次运行项目时拉引用。