2015-01-06 34 views
2

我有几个单独的项目(没有任何关系)所有这些参考我创建的DLL,让我们称之为MyDll。参考DLL和何时有复制本地设置为真

我读过默认情况下,每个引用我的dll的项目都会将Copy Local设置为true。所以每个项目都有自己的MyDll副本。

虽然如果我重建MyDll会发生什么,所有这些副本会得到更新还是需要重新添加引用?

将MyDll放在只有一个地方,我所有的项目引用这个文件或者这个想法是不明智的吗?

+1

我希望有这个共同的DLL源代码项目在我不同的项目和办理更新这些项目使用源代码版本系统复制。请记住,如果您更改此通用代码,则需要重新测试相关项目中的所有内容。这可能会非常昂贵 – Steve

+0

,所以我会将MyDll项目添加到每个使用此项目的项目的解决方案中。通过添加对dll的引用来完成此操作的主要优点是什么? – mHelpMe

+1

那么,好处很大程度上取决于这种常见的dll。例如,对于每个项目来说,通信库都是相同的,但实用程序库可能会因项目而异。您可以根据项目的需要微调这个常见的dll。您避免了重新测试整套项目的需要。 (想象一下,您需要快速运送修复bug的项目,但是您的库的新版本尚未针对此特定项目进行测试)。无论如何,我认为这样做更灵活。这里的基础是版本控制系统的作用 – Steve

回答

1

您可以添加一些东西到你的公共DLL的Post-Build事件(项目 - >属性 - > BuildEvents)。例如,你可以叫你一直与依赖的DLL

if /I "$(ConfigurationName)" == "Release" 
     Call $(SolutionDir)\distribute_library.cmd $(TargetPath) 

项目的所有输出文件夹更新的批处理文件(只是一条线,这里分裂为便于阅读)

哪里distribute_library.cmd是批处理该文件包含将$(TargetPath)复制到各个目的地的命令。

事情是这样的:

D: 
COPY %1 \MyProject1\bin\release 
....other targets .... 

不要忘记:设置Run the post-build event组合到On Successful build

0

复制本地是使用您的.dll的项目中的引用属性。 当您构建项目时,将引用程序集复制到输出文件夹的过程完成。 如果引用的路径设置为项目的输出文件夹,则需要重建项目。