VS/MSBUILD:复制子项目的输出文件而不向exe添加引用

4
我有一个解决方案,由主应用程序 MainProject 和几个插件项目 Plugin1Plugin2 等组成。它们中的每一个都在 Visual Studio 中的单独项目中构建。
为了构建该解决方案,我希望将所有插件文件复制到主应用程序的输出目录中。但是,我不想让 MainProject.exe 包含对插件 DLL 的显式引用(它们是动态加载的)。因此,为 MainProject 定义项目引用不起作用。
我可以使用后期生成步骤“手动”复制文件(如C# - Copy dlls to the exe output directory when using dependency injection with no references?中所述),但由于每个插件可能有多个文件,并且它们也会不时更改,因此这种解决方案很难维护(特别是因为我有不同的构建配置,每个配置都会产生不同的文件)。另外,我想轻松地选择哪些插件应该复制到某个构建中。
最好的方法是什么,可能涉及自定义 MSBuild 配置更改,如何实现?

1
你有没有找到一个好的方法来做这件事?我认为如果有人为VS2012编写了一个不错的插件,并配合一个自定义的MSBuild步骤,那将是非常实用和棒极了! - Nate Zaugg
1个回答

0
请查看此链接:http://msdn.microsoft.com/en-us/library/bb629394%28v=vs.100%29.aspx。在调用主项目上的MSBuild时,如果您可以传递以下内容:
msbuild /p:CustomBeforeMicrosoftCommonTargets=[your custom msbuild file];PluginList=PathToPlugin1.csproj,PathToPlugin2.csproj

在您的自定义 MSBuild 文件中,像 GatherInfo 这样的目标将为您获取每个插件项目的输出文件路径。参见此问题以获取示例:https://stackoverflow.com/questions/23346782/how-to-identify-files-needed-to-build-a-wix-project

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接