【问题标题】:Publish error: Could not load file or assembly 'Microsoft.Web.XmlTransform', Version=1.4.0.0, Culture=neutral, etc. or one of its dependencies发布错误:无法加载文件或程序集“Microsoft.Web.XmlTransform”、Version=1.4.0.0、Culture=neutral 等或其依赖项之一
【发布时间】:2014-06-14 00:52:29
【问题描述】:

我想发布一个 MVC 项目,但一直收到此错误:

System.IO.FileNotFoundException:无法加载文件或程序集“Microsoft.Web.XmlTransform”、版本=1.4.0.0、文化=中性、PublicKeyToken=...或其依赖项之一。系统找不到指定的文件。

我在 SO 或 MSDN 上搜索并尝试了一些解决方案,但无济于事。我真的很想得到一些建议。 该项目之前已成功发布,但在尝试重新发布我的更新版本后突然出现。

【问题讨论】:

  • 这个程序集引用是直接在您的.csproj 文件中,还是另一个依赖项的依赖项?
  • 直接引用。但是,我不记得在尝试此处提供的解决方案之前直接引用它:stackoverflow.com/questions/14776659/… 之前的错误仍然与现在相同
  • 您是否在 Visual Studio 的“属性”窗口中将引用设置为 CopyLocal=true?如果没有,如果您使用诸如 MSDeploy 之类的技术进行部署,它可能会解释丢失的文件。如果不是这样,那么也许您在某个地方有另一个依赖项,期望使用不同版本的程序集。在这种情况下,您需要将适当的 bindingRedirect 添加到 Web.config
  • 是的,我检查了 copyLocal 并将其设置为 true。我尝试了绑定重定向,但它不起作用(像这样:

标签: c# asp.net .net dependencies .net-assembly


【解决方案1】:

您是否尝试过使用程序集绑定日志查看器,这可能会提供更多信息...

http://msdn.microsoft.com/en-us/library/e74a18c4(v=vs.110).aspx

【讨论】:

  • 我没有否决你的答案,但我认为它被否决了 b/c 程序集绑定发生在编译期间。 OP 中的错误发生在发布期间运行的各种过程中,例如打包、创建配置文件以及所有“魔术”。我认为程序集绑定与 OP 无关。
【解决方案2】:

我终于让它工作了。我将把我的解决方案留在这里,以防其他人遇到类似问题。

基本上我尝试使用 Microsoft ASP.NET 和 Web Tools 2013.1 修复我的 VS(我从这里得到它Microsoft Web Tools download page)。但是,它并没有为我解决问题。 解决它的方法是从该位置的另一台机器复制文件 Microsoft.Web.XmlTransforms.dll

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\Web

不知何故,我的从那里丢失了(我从另一台具有相同 .NET 版本的计算机上获取并粘贴到那里),现在发布工作正常。

【讨论】:

  • 在我的情况下,DLL 在 VS2013 安装后消失了。您的解决方案有所帮助。谢谢!
  • 如果您没有安装 Visual Studio 2012,这将无济于事——无论是因为您安装了 VS Express 还是因为您在构建服务器上——很遗憾。
【解决方案3】:

从控制面板修复“Microsoft ASP.NET 和 Web 工具 2013.1 - Visual Studio 2012”为我重新添加了 dll(显然是在我几周前更新了上述软件包之后丢失的)。

【讨论】:

  • 帮了我大忙。修复完成后必须重新启动 VS 才能正常工作。
  • 修复 VS2012 的 MS Web 工具也对我有用并恢复了丢失的文件
  • 如果你没有安装 VS2012——因为你是一个构建服务器或者你有 2012 Express 或者你有 2010 和 2013 但两者之间没有(我的问题),这个包不会存在并且不会从头开始安装。
【解决方案4】:

为 VS2012 修复 MS Web 工具并没有解决我的问题。

我在文件夹C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\Web 中有文件(我不知道这是因为我安装了 VS 2013 Express 还是其他工具。也许安装 VS 2013 的 Web 工具会创建它们)。

将文件从v12.0 文件夹复制到v11.0 文件夹解决了这个问题。

【讨论】:

  • 这对我不起作用,大概是因为我的 v12.0 文件夹中的文件是 2.0 版本,并且可能有不同的 PublicKeyToken
  • @OwenBlacker:我遇到了同样的问题。根据堆栈跟踪 Microsoft.Web.Publishing.Tasks 正在调用 Microsoft.Web.XmlTransform,所以我复制了两个 dll。这解决了我的问题。
【解决方案5】:

也有这个问题。对我有用的是:

【讨论】:

  • 如果您没有安装 Visual Studio 2012,这将无济于事——因为您安装了 VS Express 或因为您在构建服务器上。
【解决方案6】:

从这里下载文件: https://docs.google.com/file/d/0B8XrlgnW-cfISXd1Q0VQb0gtNk0/edit

并将其放在这里: C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\Web

享受吧!

【讨论】:

  • 我不会从“互联网上的某个人”那里获取 DLL 并将其放在我们的一台服务器上;)
  • 我想帮助你,因为这个 DLL 本身不可用。除非你下载整个包。
  • 哦,我知道您正在努力提供帮助,非常感谢。但是从我不认识和不信任的人那里获取 DLL 是很糟糕的安全建议:) 最后,我使用的正是这个解决方案,但来自一位前同事。不过还是谢谢! :)
【解决方案7】:

在我尝试了上述所有建议后,在管理员模式下运行 VS12 对我有帮助

【讨论】:

  • 好主意。不是我的问题的解决方案,但我经常忘记将其作为故障排除步骤。
【解决方案8】:

我的情况似乎是我为 Windows 的 Service Bus 安装 Azure 1.1 SDK 和组件时造成的。由于转换错误,发布到 Azure 一直失败,回到我的其他一些只是 Web 包安装的项目,这些转换又因同样的错误而失败,所以现在我遇到了一个更大的问题。我的 POC 现在正在破坏我的生产部署。 我从没有帮助的控制面板中删除并重新安装了 Microsoft ASP.Net 和 WebTools 2013.v - Visual Studio 2012。重新启动机器,然后对同一组件进行了修复,瞧,现在似乎工作正常。

【讨论】:

    【解决方案9】:

    我遇到了几乎相同的问题,只是发布者说找不到 Newtonsoft.Json.dll,版本=4.5.0.0。在最终意识到 Azure WebJobs Publish 的 package 目录中缺少该文件之前,我尝试了所有上述解决方案(抱歉,我没有掌握包的全名)。解决方案就是清空我的整个 /packages/ 文件夹并让它们自动恢复。

    【讨论】:

      【解决方案10】:

      对我来说,“barca_d”解决方案有效,但我也必须保留我的项目

      【讨论】:

        【解决方案11】:

        希望我的解决方案对某人有所帮助。

        安装了一个名为“Microsoft ASP.NET and Framework 2012.2”的程序, 卸载它,然后修复 Microsoft Visual Studio Professional 2012,现在可以正常工作了

        已安装的程序(控制面板-->程序和功能)

        微软 .NET 框架 4.5

        微软 ASP.NET MVC 3

        Microsoft ASP.NET 网页

        带有更新 5 的 Microsoft Visual Studio Professional 2012

        微软网络部署 3.5

        【讨论】:

        【解决方案12】:

        这可能是一个边缘案例,但我克隆了我的同事 GIT 存储库,其中包含一个 Visual Studio 解决方案。

        Visual Studio 报告 Microsoft.Web.XmlTransform.dll 引用已损坏。

        查看该项目的.csproj 文件,我发现了这个:

        <HintPath>..\..\..\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.Web.XmlTransform.dll</HintPath>

        这条路对我的同事来说一定是正确的,但对我来说却是错误的。我更正了这一点:

        &lt;HintPath&gt;C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.Web.XmlTransform.dll&lt;/HintPath&gt;


        这发生在 VS2015(版本 14 更新 2)中。

        【讨论】:

          【解决方案13】:

          重新安装 NuGet 包 Microsoft.Web.Xdt

          【讨论】:

            猜你喜欢
            • 2014-02-17
            • 1970-01-01
            • 1970-01-01
            • 2017-02-14
            • 2019-03-18
            • 2017-11-08
            • 2018-03-21
            • 2017-07-02
            • 2016-07-19
            相关资源
            最近更新 更多