引用另一个带有Copy Local的项目作为参考

时间:2012-11-06 08:47:27

标签: c# .net visual-studio msbuild visual-studio-2012

我有一个项目“ProjA”,它包含了对其他几个项目和一些“插件”程序集的引用。所有这些引用都将Copy Local设置为'True'。请注意,插件程序集中的代码(项目引用)不直接在“ProjA”中引用,而是通过DI / Ninject加载和定位。 (所以我使用这些项目引用作为将插件程序集放入输出文件夹的方法,请参阅下面的原因)

我还有项目“ProjB”,它引用了ProjA。它调用ProjA代码,它应该使用引用的插件程序集来完成它。

问题是,它不起作用。插件程序集不会从ProjA输出文件夹(它们被“本地复制”进入)复制到ProjB输出文件夹中。所以Ninject没有加载它们,事情就失败了。

所以我的两个问题:

  • 如果我已经指示VS / msbuild,ProjA引用项目P1,P2,P3,P4,并将copy local设置为true - 为什么它会假设只需要主输出组件才能使ProjA工作?我能以不同的方式思考吗?
  • 我猜测将一个Copy Local引用添加到插件程序集中是为了让VS识别插件和使用它们的项目之间的构建依赖关系(目前是一组固定的插件,因此这条路线) - 不是理想。然后我认为将插件程序集作为“内容”添加到项目中会起作用,但是我有两个问题:1)TFS源代码控制;插件项目需要一个可写目标来构建,大概 - 内容文件将被“签入”和2)一些插件具有自己的内容:使用引用我不需要担心丢失的东西。走内容路线我需要引用另一个项目的构建输出文件夹,包括它的所有内容,但不包括PDB ..看起来更加hacky!

我还考虑并使用了插件项目的后期构建步骤(不理想:我将它们从另一个中提取到这个新解决方案中,如果我添加后构建步骤,它可能会搞砸另一个解决方案)或依赖于它们的项目(这是好的,但是具有相对路径的XCopy,并且必须手动设置项目依赖性......似乎更加hacky)。

我有什么遗漏,有什么想法吗?如果复制本地链接跨项目引用它将完全适合..

2 个答案:

答案 0 :(得分:0)

似乎无法使用Visual Studio或msbuild。

答案 1 :(得分:-2)

复制local = true是所有VS邪恶的来源。 嗯,至少是最重要的。

我只是说 - 不要使用它。有一个很好的outputdir,比如T:\ Bin,并使用post build脚本将所需的一切复制到该目录。从那里跑。 不要只相信VS,像盲人一样四处走动。

您也可以考虑使用GAC。