C# 将资源从dll复制到bin

C# 将资源从dll复制到bin,c#,C#,假设我们有一个库Foo。Foo有一些资源,这些资源在构建时被复制到bin中 假设我们有一个解决方案栏。我们在Bar中引用Foo,并希望Foo在Bar的bin目录中拥有的资源文件。这可能吗?具体来说,这可以通过可执行文件实现吗?您至少有两个选项 一种是使Foo成为Bar的依赖项。换句话说,将Foo项目添加到Bar的依赖项中,然后将Foo的引用属性设置为“Copy Local:True” 另一种对构建后发生的事情进行更多控制的方法是编写自己的构建后脚本,并在成功构建时执行它 例如,每当我构建proj

假设我们有一个库Foo。Foo有一些资源,这些资源在构建时被复制到bin中


假设我们有一个解决方案栏。我们在Bar中引用Foo,并希望Foo在Bar的bin目录中拥有的资源文件。这可能吗?具体来说,这可以通过可执行文件实现吗?

您至少有两个选项

一种是使Foo成为Bar的依赖项。换句话说,将Foo项目添加到Bar的依赖项中,然后将Foo的引用属性设置为“Copy Local:True”

另一种对构建后发生的事情进行更多控制的方法是编写自己的构建后脚本,并在成功构建时执行它

例如,每当我构建projectfoo时,我可能希望将输出复制到部署目录。为此,我可以将以下内容添加到生成事件(项目属性-->生成事件-->生成后事件命令行)

这将运行我的批处理文件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    

谷歌“C#Reflection”我会去看看,谢谢!我将copy local添加为true,但这并没有将库bin添加到我的解决方案bin中。所谓依赖关系,你是指添加对dll的引用吗?也许我不太清楚你想做什么。您希望一个项目的生成输出自动包含在第二个项目的输出中。是吗?让我看看我是否理解:项目A构建一个DLL。您将该DLL用作项目B中的引用。当您构建项目B时,是否希望该DLL和项目B中的exe移回项目a的bin目录?准确吗?是的,你可以修改我在上面的答案中写的批处理文件脚本。不要像我在示例中那样将生成后文件复制到“C:\DeploymentDirectory”,而是将它们复制到所需的目录。然后确保将其添加到构建后操作中,如我所述。它将在项目B成功构建后每次运行。感谢您的耐心!我感谢你的帮助
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