Visual Studio 编译时,如何管理生成的DLL

在用Visual Studio 开发时,少不了会引用其他类库的源码。一般引用类库有两种方法。

1、直接引用项目。

2、引用项目生成路径的dll。

现在如果有两个项目 ProjectA和ProjectB。ProjectA引用ProjectB。

 

问题1:

在第二种方法中,那么编译ProjectA的时候就会把ProjectB的dll考到ProjectA的bin(默认)文件夹中。

现在有个需求是,我想把ProjectB项目考过来的dll放到ProjectA项目Bin文件夹下的某一个文件夹dll,那么我们只要在ProjectA项目属性中=》生成事件=》后期生成事件命令行中添加命令: move /y $(TargetDir)\*.dll $(TargetDir)\dll

TaigetDir项目路径是bin/debug下的。可以点编辑生成后期生成事件来生成。

这样我们就可以把我们编译过后的dll考到我们想要的文件夹下了,不过这种编译的缺点是 要重新编译ProjectA这个项目才行。

 

问题2:

当我们打开两个项目时(ProjectA和ProjectB)都在Debug模式下,这时候,ProjectA已经引用了ProjectB,我们编译ProjectA的时候,就会提示dll被其他进程引用(ProjectB项目开着呢)。

这里网上有人也说了,通过欺骗而绕过Visual Studio的编译。做法如下:

在ProjectB项目中dll的生成路径下,新建一个文件夹 名叫 $(Configuration) 

然后在ProjectB的后期生成事件命令行中添加命令:xcopy /y $(ProjectDir)bin\$(Configuration) "$(ProjectDir)bin\%2$%2(Configuration)\"

把从生成在Bin中的dll拷贝到$(Configuration)文件夹下。

于是我们就可以把原来ProjectA引用ProjectB生成的dll改为引用生成在$(Configuration)文件夹下的dll

这时候ProjectA中的引用路径还是原来的。欺骗了我们的眼镜。

posted @ 2012-02-06 21:32  Lee's Blog  阅读(3290)  评论(1编辑  收藏  举报