我有一个包含主应用程序 MainProject
的解决方案和几个插件项目 Plugin1
, Plugin2
等等。它们中的每一个都构建在 Visual Studio 中的一个单独项目中。
为了构建解决方案,我希望将插件的所有文件复制到主应用程序的输出目录中。但我不要MainProject.exe
包含对插件 dll 的显式引用(它们是动态加载的)。因此为 MainProject
定义项目引用不起作用。
我可以使用构建后步骤“手动”复制文件(如 C# - Copy dlls to the exe output directory when using dependency injection with no references? 中所述),但由于每个插件可能有多个文件,并且它们也会不时更改,因此该解决方案维护起来相当繁琐(特别是因为我确实有不同的构建配置,每个配置都生成不同的文件)。此外,我想轻松选择,应该为某个构建复制哪些插件。
这样做的最佳方法是什么,可能涉及自定义 MSBuild 配置更改?
最佳答案
请参阅此链接: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
关于visual-studio - VS/MSBUILD : Copy output files of sub-project without adding reference to exe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10515708/