【问题标题】:Why is Microsoft.SharePoint.Search.dll copied in my project?为什么我的项目中复制了 Microsoft.SharePoint.Search.dll?
【发布时间】:2008-10-13 17:34:27
【问题描述】:

在处理涉及引用 Microsoft.SharePoint.dll 的 VS2005 项目时,构建项目会导致 Microsoft.SharePoint.Search.dll 被复制到我的 bin 文件夹中。为什么是这样?好吧,也许这只是一个错误,但我想知道机制。

[编辑:本地复制绝对是关闭的——Microsoft.SharePoint.dll 没有被复制。 Microsoft.SharePoint.Search.dll 不在 GAC 中,但如果有也没关系。]

【问题讨论】:

    标签: sharepoint visual-studio-2005


    【解决方案1】:
    • 它不在 GAC 中
    • 您引用的其中一个程序集正在使用它(我认为 Microsoft.Sharepoint.dll 引用了它)
    • 由于您没有引用它,因此据我所知,您无法将 Local Copy 设置为 FALSE
    • 我已将构建/部署脚本更改为仅删除它。

    【讨论】:

    • 奇怪的是,当你的答案最接近正在发生的事情时,你却被否决了。我赞成它,但我想了解为什么会发生这种情况。它不能只是导致复制的引用引用......这在其他地方没有发生过 AFAIK。
    【解决方案2】:

    对我有用的是

    • 添加对 Microsoft.SharePoint 和 Microsoft.SharePoint.Search 的引用(即使您不需要)
    • 将两个引用的 Copy Local 设置为 false。

    当您构建项目时,它们都不会被复制到 debug/release/whatever 目录。

    【讨论】:

    • 抱歉花了这么长时间 - 它确实有效 - 接受,虽然我仍然想知道为什么会这样。耸耸肩。
    【解决方案3】:

    可能是因为它不在 GAC 中,因为 GAC 中的其他文件没有复制到那里。

    【讨论】:

      【解决方案4】:

      它可能是一个依赖项,并且您已启用本地复制。

      我会保持启用本地复制,因为它确实减轻了部署的痛苦。

      【讨论】:

      • 我不同意复制本地对于 MS 程序集来说是一个好的举措。如果已将修补程序部署到服务器并且您的解决方案正在引用(和复制)未修补的版本怎么办?混乱!
      【解决方案5】:

      您是否尝试关闭属性中的“复制本地”以引用 Microsoft.SharePoint.dll ?

      【讨论】:

        【解决方案6】:

        如果您在机器(主机)上编译 x64 体系结构的程序集,并且在“添加引用”期间安装了 x64 版本的 SharePoint(将引用设置为这些程序集),则会将 Copy local 设置为 false .

        所以,如果程序集是 AMD64 并且您设置了“任何 CPU”,那么“添加引用”设置就是 copy local = true,无论如何。如果将其更改为 false,但随后从另一个目标设置为 Any CPU 或 NOT x64 的项目引用此项目,则引用 get 也会被复制。

        在此链接中根据需要查看自定义 MSBuild:How do I override CopyLocal (Private) setting for references in .NET from MSBUILD

        【讨论】:

          【解决方案7】:

          好的,我只是想用这个解释来补充答案:

          1) 在我的项目中,我参考了: 微软共享点 Microsoft.SharePoint.Publishing

          2) 在 x64 虚拟 moss 2007 服务器上,当我编译我的项目时,我将以下文件添加到我的 bin/debug 中: ssocli.dll, Microsoft.SharePoint.Portal.SingleSignon.dll, Microsoft.SharePoint.Search.dll, Microsoft.SharePoint.Search.xml, Microsoft.Office.Server.Search.dll。

          有趣的是,我的 x86 虚拟服务器上没有这个问题。

          3) 所有这些文件都可以在 c:\program files\Common Files\Microsoft Shared\Web Server Extensions\bin\ISAPI 中找到。

          4) 根据我在 MSDN 论坛上找到的答案,引用的 dll 可能引用或依赖于其他 dll。因此,它们被添加到 bin/debug 文件夹中。

          5) 为防止这种情况发生,您可以在项目中引用依赖的 dll 并将本地复制设置为 false。

          https://social.msdn.microsoft.com/Forums/sharepoint/en-US/192fa94c-b588-401d-8ca8-845c3fe15f60/could-not-load-file-or-assembly-microsoftsharepointsearch-version12000-cultureneutral?forum=sharepointdevelopmentlegacy

          【讨论】:

            【解决方案8】:

            我们的一位客户遇到了这个问题,这似乎是由于 Visual Studio 2019 安装向导的单个组件部分提供的 Office Developers Tools for Visual Studio 选项所致,例如

            解决方案是取消选中它并卸载插件。因此,SharePoint相关程序集在编译时不应添加到项目中。

            我希望这些信息可能对某人有所帮助。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2023-03-17
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2016-11-29
              • 1970-01-01
              • 2021-06-16
              • 1970-01-01
              相关资源
              最近更新 更多