在用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中的引用路径还是原来的。欺骗了我们的眼镜。