2015-05-11 104 views
2

假設我們有一個庫Foo。 Foo在構建時有一些複製到bin的資源。從dll複製資源到bin

假設我們有一個解決方案吧。我們在Bar中引用Foo,並且需要Foo在Bar的bin目錄中的資源文件。這可能嗎?具體來說,這可以用可執行文件來完成嗎?

+1

Google「C#Reflection」 – Icemanind

+0

我會去閱讀,謝謝! – sparkyShorts

回答

1

您至少有幾個選項。

一個是讓Foo成爲Bar的依賴。換句話說,將Foo項目添加到Bar的依賴項,然後將Foo的引用屬性設置爲「Copy Local:True」。

對構建後發生的事情有更多控制權的另一種方法是編寫自己的構建後腳本並在成功構建時執行它。

例如,無論何時我構建項目Foo,我都可能要將輸出複製到部署目錄。要做到這一點,我可以添加以下到構建事件(項目屬性 - >生成事件 - >生成後事件命令行)

$(ProjectDir)PostBuild.bat $(ProjectName) $(Platform) $(Configuration) 

這將運行我的批處理文件,PostBuild.bat,包括批處理文件期望的一些變量。該批處理文件如下所示:

REM A list of all Macros --> https://msdn.microsoft.com/en-us/library/c02as0cs.aspx 

@ECHO off 

REM Kill the built app if we forgot to... 
TSKILL %1 

REM Make the target dir if it doesn't exist 
IF NOT EXIST C:\DeploymentDirectory\%1 mkdir C:\DeploymentDirectory\%1 

ROBOCOPY E:\repos\MyFooProject\%1\%1\bin\%2\%3\ C:\DeploymentDirectory\%1\ *.dll *.xml *.exe *.pdb *.config /purge 

DEL C:\DeploymentDirectory\%1\*.vshost.* 

REM Robocopy always exits with a code, which will cause 
REM VS to think something bad happened :-(
REM So the following is to handle that 

if %ERRORLEVEL% GEQ 8 goto failed 

rem End of batch file 
GOTO success 

:failed 
rem Do not pause as it will pause msbuild. 
exit 

:success 
exit 0  
+0

我將本地副本添加到了true,但是這並沒有將庫bin添加到我的解決方案bin中。依賴關係,你的意思是添加對dll的引用? – sparkyShorts

+0

也許我對你想要做的事情有點不清楚。您希望將一個項目的構建輸出自動包含在第二個項目的輸出中。是對的嗎? – GojiraDeMonstah

+0

正確。這就是我要做的。 – sparkyShorts