在构建时将库项目复制到子文件夹而不是root

时间:2013-07-26 07:11:26

标签: c# visual-studio mef

我有以下项目结构

  • 主要应用程序(exe)
  • 插件界面(dll)
  • 插件A(dll)
  • 插件B(dll)

主应用程序引用插件接口。插件接口没有引用。插件A和插件B引用插件接口。

我在运行时使用MEF加载我的插件。

我想以某种方式配置我的VS2012解决方案,即将插件复制到。\ Plugins而不是根文件夹。我怎么能这样做?

注意:目前我实际上是从我的主应用程序引用插件A和B,只是因为它们被复制到我的输出文件夹,这是一个丑陋的解决方案。

1 个答案:

答案 0 :(得分:4)

您可以在Visual Studio中添加后期构建事件。

进入插件A的项目属性并单击Build Events选项卡,然后在Post-build event命令行框中输入类似于以下内容的代码:

copy "$(TargetPath)" "$(SolutionDir)MainApplicationPath\bin\debug\Plugins\$(TargetFileName)"

其中$(SolutionDir)是解决方案的根文件夹,包括尾部斜杠(例如C:\DevProjects\MyApplication\)。

如果您希望编译的文件进入应用程序的release文件夹,您也可以将路径更改为\bin\release或将其添加为第二行。请注意,这只是在发布模式下编译时的发布编译,如果您在调试模式下编译并将路径更改为\bin\release,您的发布文件夹中仍然只有调试版本。