【问题标题】:Team Build 2010 - Third Party Assembly References not copying to output folderTeam Build 2010 - 第三方程序集引用未复制到输出文件夹
【发布时间】:2011-05-13 11:49:59
【问题描述】:

当我在构建服务器上构建解决方案时,它会生成一个二进制文件夹,然后将这些二进制文件复制到最终输出文件夹。在我的情况下,一些第三方组件引用被正确复制,而其他第 3 部分组件引用没有被复制。不要认为我的解决方案项目不直接引用正在复制的程序集。

这意味着一切正常。但是当我运行我的程序时,它不会启动,因为它引用的程序集不能反过来加载它们的引用。

构建中的哪个过程决定了将哪些程序集复制到二进制文件夹?有没有办法指定它应该复制所有程序集?

编辑:一种可能的解决方案是仅在解决方案中的一个项目中引用所有必需的程序集,但这会变得非常混乱。

【问题讨论】:

    标签: tfs msbuild tfsbuild assemblies


    【解决方案1】:

    对于 ASP.NET 项目,有一个用于此的内置机制。确保所需的程序集位于项目下名为 _bin_deployableAssemblies 的文件夹中,并且它们将被自动复制。要查看此自定义如何连接到 Web 项目的构建中,请找到该文件...

    %PROGRAMFILES%\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets
    

    看看 _CopyBinDeployableAssemblies 目标。在同一个文件中,您可以看到它被这样引用...

    <PropertyGroup>
      <PrepareForRunDependsOn>
        $(PrepareForRunDependsOn);
        CopySilverlightApplications;
        _CopyBinDeployableAssemblies;
      </PrepareForRunDependsOn>
      ...
    

    您可以对任何项目进行类似的自定义,因为目标 PrepareForRun 是 Visual Studio 中常见 MSBuild 目标的一部分。

    【讨论】:

      【解决方案2】:

      请做一件事,将第三方 dll 添加到您的 bin 文件夹中,并在 bin 文件夹中引用该 dll。

      然后构建解决方案并提交结果。这将复制 bin 文件夹中的第三方 dll。

      【讨论】:

      • 对不起,我不明白。你的意思是我应该在我的项目中引用第三方程序集的引用吗?我知道这会起作用,但你最终会得到一个项目,其中引用了这么多程序集,它会变得混乱。
      • @Tersius:假设如果您要引用驻留在您的 s/m 中的第三方 dll,然后您将整个文件复制到另一个 s/m,它将如何引用第三个您的 s/m 中的派对 dll。这就是为什么我告诉将 dll 复制到您的 bin 文件夹并添加对它的引用
      【解决方案3】:

      在某些情况下,您需要复制没有作为引用的程序集,如果是这种情况,请参阅:Visual Studio Package build and DLLs in private bin path

      如果不是上述情况,请检查您要复制的所有引用是否具有属性 Copy Local: True。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-01-24
        • 1970-01-01
        • 2011-02-28
        • 1970-01-01
        • 2011-04-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多