2015-05-11 66 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