Visual Studio 2010在建置專案時需要選擇建置平台
若有參考到第三方元件(Third party)時
通常會根據第三方元件來調整建置平台
但若是第三方元件有分X86跟X64版本
每次切換建置平台就得重新參考第三方元件的dll,實在是非常麻煩!!
為了不想再浪費時間在重新參考上面
上網找了一下
大致有兩種方法可用
第一種:修改專案檔(.csproj)來做控制
用記事本開啟你的專案檔
然後修改裡面Reference的部分
假設你現在參考了一個叫做"Emgu.CV"的dll
原本的內容大概會顯示如下:
<Reference Include="Emgu.CV"> <HintPath>..\..\..\EMGUCV\X64\Emgu.CV.dll</HintPath> </Reference>這時參考的dll就是固定在\EMGUCV\X64\資料夾裡
然後把它改成如下:
<Reference Include="Emgu.CV" Condition="$(Platform) == 'x86'"> <HintPath>..\..\..\EMGUCV\X86\Emgu.CV.dll</HintPath> </Reference> <Reference Include="Emgu.CV" Condition="$(Platform) == 'x64'"> <HintPath>..\..\..\EMGUCV\X64\Emgu.CV.dll</HintPath> </Reference>他就會根據你的建置平台來改變參考位置
這樣就能夠輕鬆解決每次切換不同建置平台
卻要手動重新加入參考的麻煩!!
第二種:新增建置事件
此種方法不用記事本去修改專案檔
而是修改專案的屬性裡的建置事件
加入建置前事件命令列的條件:
xcopy /s /e /y "$(SolutionDir)..\EMGUCV\$(PlatformName)\*.dll" "$(SolutionDir)..\EMGUCV\references"
這是什麼意思呢!?就是在建置專案前,根據你的建置平台,假設是x86
就會把存放於EMGUCV\x86\裡面的dll檔,複製到EMGUCV\references\這個目錄下
($(PlatformName)會根據你的建置平台改變)
所以只要將你的專案的參考指向這個EMGUCV\references\目錄裡的dll即可
就可以保障你在建置前,參考到對的dll
(因為在建置前,就會把隊的dll都copy過去!)
這兩種方法有好有壞
第一種方法若是重新參考dll
就得重新用記事本去修改專案檔
第二種方法若是遇到所參考的dll很多,檔案很大時
建置前的複製過程就會很久
若是你有很多專案都如此使用的話
建置起來的時間會相當可觀!!
所以就根據自己的情況
選擇理想的方法來用吧!!
這樣至少在方案的組態管理員中切換建置平台後
就可以直接建置,並參考到對的dll !!
沒有留言:
張貼留言