2

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

我也有引用 ProjA 的项目“ProjB”。它使用引用的插件程序集调用应该执行此操作的 ProjA 代码。

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

所以我的两个问题:

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

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

有什么我想念的吗,有什么想法吗?如果 Copy Local 跨项目引用链接,它将非常适合..

4

2 回答 2

0

Visual Studio 或 msbuild 似乎不可能。

于 2012-11-30T23:37:54.373 回答
-2

复制 local = true 是 VS 万恶之源。好吧,至少是大多数。

我只想说 - 不要使用它。拥有一个不错的输出目录,例如 T:\Bin,然后使用构建后脚本将所需的所有内容复制到该目录。并从那里跑。不要只相信VS,像瞎老鼠一样四处走动。

您也可以考虑使用 GAC。

于 2012-11-06T09:08:05.343 回答