【问题标题】:'Publish failed' but build succeeded?“发布失败”但构建成功?
【发布时间】:2011-12-28 13:55:49
【问题描述】:

使用 Visual Studio 2008 时,当我“发布网站”时,应用程序构建正确,但随后我收到“发布失败”消息:

这有什么可能的原因,我该如何预防?

【问题讨论】:

  • @yytg - 您需要什么样的信息?我没有收到任何警告。构建成功,为什么会发布失败?
  • @curt:输出窗口日志可能会提供更多需要的信息。另外,请检查此link
  • 嗨@Knvn,这解决了我的问题。我不知道我可以检查那个。我正在编译的文件夹,我没有正确的权限。请创建一个答案,我会标记它:)
  • 对我来说,这是当我尝试使用“删除现有文件 = true”选项发布服务时,但该服务的目录包含一个我保持打开状态的文件。于是我关闭文件,服务发布成功。
  • @NaveenBhat 在我的情况下(VS 2017),输出窗口在“发布失败”消息弹出后立即清除。我几乎没有时间打印屏幕。

标签: asp.net visual-studio visual-studio-2008 publish


【解决方案1】:

我正在开发一个功能分支,但失败了。我切换到Master,并且工作正常。

【讨论】:

    【解决方案2】:

    删除发布配置文件并创建另一个。为我工作

    【讨论】:

      【解决方案3】:

      如果有人更改了项目文件和相关框架的版本。然后发生了这种类型的问题。

      请转到 "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Microsoft\VisualStudio\v16.0\Web" 位置以获得 Visual Studio 发布和构建设置 -> 编辑 -> 注释所有文件部分的强制副本。

      【讨论】:

        【解决方案4】:

        如果您在发布 Web 对话框中选择“在发布前删除所有现有文件”,请确保使用管理员权限启动 Visual Studio。右键单击 Visual Studio,然后单击以管理员身份运行。希望这会有所帮助。

        【讨论】:

          【解决方案5】:

          尝试重建后,我的解决方案中的其他项目能够正确发布,并将我的发布位置更改为 C: 驱动器(本地连接)而不是推送到映射的网络驱动器,但我仍然遇到问题只有错误输出说:

          ========== Build: 5 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
          ========== Publish: 0 succeeded, 1 failed, 0 skipped ==========
          

          我的解决方案是针对 x86,但我认为在 Git 合并期间,该项目的配置文件已切换到任何 CPU。在为项目创建 x86 配置文件并使其与发布目标和活动解决方案配置的目标相匹配后,我能够再次成功发布。

          【讨论】:

            【解决方案6】:

            我知道我迟到了,但我认为它应该用于搜索此查询的人。

            只需卸载所有 nuget 包,然后清理并重建解决方案, 现在点击发布,确定它可以工作,你会看到发布开始并且现在可以正常工作了

            【讨论】:

              【解决方案7】:

              我在 VS2017 的网站项目中遇到了同样的问题。构建工作,但发布给了我一个错误: Error CS0012: The type 'System.Net.Http.HttpMessageHandler' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. 我所有的项目都已经引用了 System.Net.Http,所以真的很混乱。

              要修复它,我必须将 System.Net.Http.dll 复制到 我的网站项目/bin 文件夹中,以便发布可以找到它并将其复制到我的网络主机。我通过查看另一个项目的引用(类库)、System.Net.Http.dll 属性和路径(C:\Program Files(x86)\Reference Assemblies\Microsoft\)找到了 System.Net.Http.dll Framework.NetFramework\v4.6\System.Net.Http.dll)。

              【讨论】:

                【解决方案8】:

                我有几个在 web.config 中注册的用户控件,并且在 .ascx 文件头中有一个 ClassName。对于正常构建,一切正常,但发布后这些类名不再被识别。在某些时候,我发现错误不在我的常规代码文件中,而是在用于发布的临时目录中的副本中。

                我打开了“发布期间预编译”(可在“设置”>“文件发布选项”下找到)。关闭该选项对我有用。

                【讨论】:

                  【解决方案9】:

                  对此有许多建议的解决方案。我认为他们把问题复杂化了。 我发现以下内容对我有用:

                  1. 在您的解决方案中找到 obj(Release 或 Debug)文件夹
                  2. 在 Release 或 Debug 文件夹中删除“AspnetCompileMerge”文件夹的 CONTENTS

                  现在尝试发布。

                  【讨论】:

                  • 试过了。不起作用.. 甚至删除了整个 obj 文件夹。
                  【解决方案10】:

                  对我来说这很简单——dist 文件夹被锁定了。我通过解锁器将其解锁并恢复发布。

                  【讨论】:

                    【解决方案11】:

                    你可以试试这个:

                    1. 对 Web 应用程序执行预编译。

                    2. 清除目标目录(IIS中的虚拟目录或物理文件 文件夹)并将所有文件(Web应用程序的)部署到目标中 目录。

                    在输出窗口中,您可以检查发布网站在哪个阶段 操作失败。例如,在第一阶段,如果有一些错误 这只会在预编译时发生,这将导致第 1 阶段失败。 或者有时如果目标目录的某些配置不正确。 如 IIS 虚拟目录未设置为正确的 ASP.NET 版本或 一些旧文件被锁定并阻止它们被清除。大多, 发布失败将由 IIS 端配置问题引起,例如 认证设置....

                    Source link

                    您可以通过按Ctrl+WO来打开输出窗口。

                    【讨论】:

                    • 我不得不完全删除源文件夹并从 git 重新克隆。一旦我这样做了,部署工作就没有警告或错误!
                    【解决方案12】:

                    我遇到了同样的问题。识别问题的噩梦,因为日志和输出显示没有错误或失败。我只是得到“构建:39 成功”和“发布:1 失败”。

                    我通过一次一个系统地删除所有 NuGet 包(并删除引用它的代码)来解决问题,直到我发现有问题的包。

                    这需要很长时间!

                    但是,我的答案是 Microsoft.Net.Compilers

                    不知道我的项目是如何结束的,但是一旦我删除了那个包,一切都会再次正常发布。

                    编辑 - 值得一提的是,这个问题发生在 VS 2008、2012 和 2015 年,但 不会 发生在 2017 年。

                    【讨论】:

                    • 这也是我的问题,谢谢。我必须先删除 CodeDom.Providers.DotNetCompilerPlatform,因为它依赖于 Net.Compilers
                    • FWIW,如果我使用 Microsoft.Net.Compilers 的 2.4 版,那么我的发布成功。如果我升级,则无法发布。
                    • 这解决了我的问题,如果你有这个问题当然值得测试。但是,现在我注意包含这些程序集,并且我注意到项目有时会包含它们并且没有任何发布问题。 (版本不同?构建设置?我不知道为什么它们有时会导致发布失败。)
                    • 哇!删除 Microsoft.Net.Compilers 解决了我的问题!我以为我会先尝试一下,然后再以艰难的方式进行,仅此而已。我很想知道为什么 - 需要一段时间来研究它。
                    • 感谢您发现了这个,非常棘手且非常烦人。
                    【解决方案13】:

                    导致我的问题的原因略有不同,但与上述某些原因有相似之处。

                    我设法删除了给定应用程序的本地副本,并进行了 GIT 硬重置以从相关存储库中获取最新版本。这反过来又清除了 web.config 文件(由于各种原因,它没有存储在 GIT 存储库中)。

                    这会导致各种 NuGet 包的配置信息“丢失”(因为它存储在 web.config 中)。

                    幸运的是,我已经“备份”了 web.config,所以一旦我发现它不存在(迁移失败,因为我无法连接到数据库),我就能够替换它。

                    修复 web.config 后再次尝试发布,一切正常。

                    【讨论】:

                      【解决方案14】:

                      不确定这是否在不同版本的 Visual Studio 中发生,但至少在 2015 专业版中,当我们尝试使用包管理器从解决方案更新所有 Nuget 包时会出现问题。

                      正如@SimonGoldstone 所指出的,问题是由“Microsoft.Net.Compilers” 包引起的。默认情况下,包会在创建新的 Web 应用程序时添加到解决方案中。默认版本 1.0.0 不会引入任何问题。我能够继续使用最新版本进行测试,直到 2.4.0 并且一切正常,但从 2.6.0 开始,一切都将开始。如果严格要求更新,我建议将上述软件包更新到 2.4.0 版。在做了一些研究之后,似乎在 2.4.0 之后的版本中引入了一些错误,并且没有长期修复。但奇怪的是,这个问题是如何在没有基本质量控制检查点的情况下包含在 Nuget 中的。

                      【讨论】:

                      • 此外,2.4.0 之前的版本似乎依赖于 Microsoft.CodeDom.Providers.DotNetCompilerPlatform,而 2.4.0 及更高版本则没有。
                      【解决方案15】:

                      结论是:尝试另一个 VS 版本,看看是否可以。

                      这是为我做的。

                      我有 VS 2013 Pro 和 Visual Studio 2015 社区。我使用一种或另一种来处理我的 MVC 项目,一切都很好。然后突然之间 VS 2013 无法发布,尽管它会构建得很好。除了一些愚蠢的错误之外没有任何错误......代码没有从所有路径返回......

                      所以当我在 VS 2017 中打开它时 - 它发布了相同的项目就好了。我怀疑一个编译问题 - 因为那是它会失败的阶段。

                      希望能帮助您节省一点时间。

                      【讨论】:

                      • 感谢 Alexey Shevelyov。你给了我一个想法。我的项目是在 VS2017 中创建的,我试图从 VS2013 发布,所以它抛出错误,当我尝试使用 VS2017 时它工作了。
                      【解决方案16】:

                      确保在发布前清空目标文件夹(手动)。有时 vs 不能删除文件会导致发布失败

                      【讨论】:

                        【解决方案17】:

                        我今天遇到了同样的问题,这是由于我打开图像文件夹以查找图像时创建的 Thumbs.db 文件。我删除了文件,项目部署成功。希望这可以帮助处于相同情况的其他人。

                        【讨论】:

                        • 我从 sln 文件夹中删除了一个图像,但它显示在 VS 中。我从 VS 中删除了一张图片,然后发布成功。
                        【解决方案18】:

                        我不得不将项目复制到 C:\a\ 然后发布。我怀疑长路径存在问题。奇怪,但对我有用。

                        【讨论】:

                        • 我仍然在 Windows 10 上收到此消息...该消息在“Web Publish Activity”窗口中显示过一次。关于大于 260 个字符的文件路径,与 msdn.microsoft.com/en-us/library/windows/desktop/… 匹配。但从那以后我已经尝试发布了几次,但消息一直没有回来。
                        【解决方案19】:

                        就我而言,我正在发布到映射网络驱动器中的目录,但 输出 面板/窗口显示该位置不存在。路径是正确的,并且驱动器是完全可访问的。当我使用 ... 按钮在 Visual Studio 中重新设置发布到的路径时,问题自行解决。

                        【讨论】:

                          【解决方案20】:

                          检查项目 BIn 目录。必须有您的页面或控件的 DLL。必须在发布期间重新创建。所以排除它或删除它

                          【讨论】:

                          • 请提供更多说明,说明为什么这会导致给定的错误消息。
                          【解决方案21】:

                          有时是因为您需要以管理员身份运行 VS 才能写入目标目录。

                          检查输出消息,它们应该可以帮助您解决问题

                          【讨论】:

                          • 这对我有用,只需右键单击VS,以管理员身份运行,然后在刚刚打开的VS中打开项目。
                          猜你喜欢
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 2017-02-25
                          • 1970-01-01
                          相关资源
                          最近更新 更多