在用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中的引用路徑還是原來的。欺騙了我們的眼鏡。