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