【问题标题】:Copy library projects to subfolder instead of root when building构建时将库项目复制到子文件夹而不是根目录
【发布时间】:2013-07-26 07:11:25
【问题描述】:

我有以下项目结构

  • 主应用程序 (exe)
  • 插件接口 (dll)
  • 插件 A (dll)
  • 插件 B (dll)

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

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

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

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

【问题讨论】:

    标签: c# visual-studio mef


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • @metacircle 还要确保在您的插件项目中对“插件接口 (dll)”的引用已将 Copy Local 设置为 false。这样您就可以避免可能出现的奇怪的上下文问题。
    猜你喜欢
    • 2016-10-03
    • 2016-01-12
    • 2014-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-04
    • 2015-05-16
    • 2014-07-25
    相关资源
    最近更新 更多