【问题标题】:Build succeeds, but publish fails构建成功,但发布失败
【发布时间】:2011-08-01 19:26:53
【问题描述】:

直到两天前,我可以通过右键单击我的项目并单击上下文菜单上的发布按钮来使用 Visual Studio 2010 的“发布 Web”选项。现在,当我尝试做同样的事情时,我得到以下输出:

------ Build started: Project: ELMS, Configuration: Debug Any CPU ------
Build started 8/1/2011 3:08:03 PM.
GenerateTargetFrameworkMonikerAttribute:
Skipping target "GenerateTargetFrameworkMonikerAttribute" because all output files are
up-to-date with respect to the input files.
_CopyOutOfDateSourceItemsToOutputDirectoryAlways:
Copying file from "C:\SVN\TrakNet\trunk\MTS\lib\Newtonsoft.Json.Net35.dll" to 
  "bin\lib\Newtonsoft.Json.Net35.dll".
CopyFilesToOutputDirectory:
  LMS -> C:\SVN\TrakNet\trunk\MTS\bin\LMS.dll

Build succeeded.

Time Elapsed 00:00:00.04
------ Publish started: Project: LMS, Configuration: Debug Any CPU ------
Object reference not set to an instance of an object.
========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========
========== Publish: 0 succeeded, 1 failed, 0 skipped ==========

这是在尝试发布到本地主机时(出于调试目的)

以下是我正在使用的发布配置文件的设置:

Publish Method: Web Deploy
Service URL: localhost
Site/application: default web site/ELMS
[x] Mark as IIS application on destination
[x] Leave extra files on destination (do not delete)

我已经尝试过:

- Cleaning/rebuilding the project
- Deleting the bin folder of the project
- Running reg_iis.exe -i
- Reinstalling VS2010

但我所做的任何更改都没有修复错误。

任何对可能导致问题的原因的见解将不胜感激:)

编辑:

在我上次重新启动时,问题实际上已自行解决。自从问题首次出现以来,我必须重新启动 6-7 次,但这次没有对象引用消息。这是现在构建/发布的日志:

------ Build started: Project: LMS, Configuration: Debug Any CPU ------
Build started 8/3/2011 9:10:12 AM.
GenerateTargetFrameworkMonikerAttribute:
Skipping target "GenerateTargetFrameworkMonikerAttribute" because all output files are up-to-date with respect to the input files.
_CopyOutOfDateSourceItemsToOutputDirectoryAlways:
  Copying file from "C:\SVN\TrakNet\trunk\MTS\lib\Newtonsoft.Json.Net35.dll" to "bin\lib\Newtonsoft.Json.Net35.dll".
CopyFilesToOutputDirectory:
  LMS -> C:\SVN\TrakNet\trunk\MTS\bin\LMS.dll

Build succeeded.

Time Elapsed 00:00:00.04
------ Publish started: Project: LMS, Configuration: Debug Any CPU ------
Gather all files from Project items @(IntermediateAssembly). Adding:
bin\LMS.dll to bin\LMS.dll
bin\LMS.pdb to bin\LMS.pdb
Gather all files from Project items @(Content). Adding:
Global.asax;lib\Newtonsoft.Json.Net35.dll;MtsSchemas\MtsSchema.xml;Web.config
Gather all files from Project output (IntermediateSatelliteAssembliesWithTargetPath).
Adding:
Gather all files from Project items
@(ReferenceCopyLocalPaths,ReferenceComWrappersToCopyLocal,ResolvedIsolatedComModules,_DeploymentLooseManifestFile,NativeReferenceFile).
Gather all files from Project items @(AllExtraReferenceFiles). Adding:
Gather all files from Project items
@(_SourceItemsToCopyToOutputDirectoryAlways,_SourceItemsToCopyToOutputDirectory). Adding:
bin\lib\Newtonsoft.Json.Net35.dll
Gather all files from Project items @(_binDeployableAssemblies). Adding:
Publish Pipeline Collect Files Phase
Found The following for Config tranformation:
Web.config
Creating directory "C:\SVN\TrakNet\trunk\MTS\obj\Debug\TransformWebConfig\transformed\".
Publish Pipeline Transform Phase
Creating directory "C:\SVN\TrakNet\trunk\MTS\obj\Debug\CSAutoParameterize\transformed\".
Copying Web.config to obj\Debug\CSAutoParameterize\original\Web.config.
Transforming Source File: C:\SVN\TrakNet\trunk\MTS\Web.config
  Applying Transform File: <?xml version="1.0"?>
        <configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
          <connectionStrings>
            <add
              connectionString="{% token='$(ReplacableToken_#(parameter)_#(tokennumber))' xpathlocator='name' parameter='$(name)-Web.config Connection String' description='$(name) Connection String used in web.config by the application to access the database.' defaultValue='$(connectionString)' tags='SqlConnectionString' %}"
              xdt:Transform="SetTokenizedAttributes(connectionString)" xdt:SupressWarnings="True" />
          </connectionStrings>
        </configuration>
      Output File: obj\Debug\CSAutoParameterize\transformed\Web.config
    Transformation succeeded
Auto ConnectionString Transformed Web.config into obj\Debug\CSAutoParameterize\transformed\Web.config.
Creating directory "obj\Debug\Package\PackageTmp".
Copying all files to temporary location below for package/publish:
obj\Debug\Package\PackageTmp.
Copying bin\LMS.dll to obj\Debug\Package\PackageTmp\bin\LMS.dll.
Copying bin\LMS.pdb to obj\Debug\Package\PackageTmp\bin\LMS.pdb.
Copying Global.asax to obj\Debug\Package\PackageTmp\Global.asax.
Copying lib\Newtonsoft.Json.Net35.dll to obj\Debug\Package\PackageTmp\lib\Newtonsoft.Json.Net35.dll.
Copying MtsSchemas\MtsSchema.xml to obj\Debug\Package\PackageTmp\MtsSchemas\MtsSchema.xml.
Copying C:\SVN\TrakNet\trunk\MTS\lib\Newtonsoft.Json.Net35.dll to obj\Debug\Package\PackageTmp\bin\lib\Newtonsoft.Json.Net35.dll.
Copying obj\Debug\CSAutoParameterize\transformed\Web.config to obj\Debug\Package\PackageTmp\Web.config.
Publish Pipeline Deploy phase Pre-Deploy CopyAllFilesToOneFolder Stage
Generate source manifest file for Web Deploy package/publish ...
Creating directory "obj\Debug\Database".
Starting Web deployment task from source:manifest(C:\SVN\TrakNet\trunk\MTS\obj\Debug\Package\LMS.SourceManifest.xml) to Destination:auto().
Updating filePath (default web site/LMS\bin\ELMS.dll).
Updating filePath (default web site/LMS\bin\ELMS.pdb).
Updating filePath (default web site/LMS\bin\lib\Newtonsoft.Json.Net35.dll).
Updating filePath (default web site/LMS\lib\Newtonsoft.Json.Net35.dll).
Updating filePath (default web site/LMS\Web.config).
Updating setAcl (default web site/LMS).
Updating setAcl (default web site/LMS).
Successfully executed Web deployment task.
Publish is successfully deployed.
========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========
========== Publish: 1 succeeded, 0 failed, 0 skipped ==========

就像我说的:不知道发生了什么变化。我一直在手动将 DLL 移动到网站的虚拟目录中,然后只是为了好玩,我今天早上尝试发布,一切正常。

【问题讨论】:

  • 能否将“MSBuild 项目构建日志文件详细程度”设置为 DetailedDiagnostic(在 VS/Tools/Options/Projects and Solutions/Build and Run 中)并发布更详细的日志请输出?
  • 你在使用像ankhsvn这样的SVN插件吗?
  • 我建议在此线程的标题中添加一些关于“对象引用未设置为对象的实例”错误的内容。否则可以假设是(虽然我不认为是)重复:stackoverflow.com/a/48104124/826308

标签: asp.net visual-studio-2010 iis-7.5 publish msbuild-wpp


【解决方案1】:

根据我的经验,当从源代码管理的不同分支添加/删除文件并且不完美的合并导致项目文件结构和实际文件结构出现分歧时,可能会发生这种情况。

这可能是几个选项之一:

  • 文件已删除,但项目仍引用它。将无法编译,将无法发布。
  • 添加了一个文件,但项目未引用该文件。可以编译,取决于项目/解决方案中的其他地方是否引用了类/方法。如果编译,将发布。
  • 添加了一个文件,但项目合并导致它在项目列表中多次出现。将编译,将无法发布。

解决方法是查看源代码管理日志,并尝试针对上述问题确定对项目文件的错误合并,然后相应地修复项目文件。

【讨论】:

  • 这肯定是问题所在。我将检查源代码控制日志并尝试确定是否是这种情况。编辑:在查看项目文件时,我没有看到任何重复的文件名。
  • 我遇到了类似的问题,但没有任何帮助....除了我能够从另一台 PC 成功部署。
  • 这解决了我的问题。我恢复到我能找到的第一个提交,然后与下一个提交进行比较。我必须更改的唯一文件是我的 csproj。清理干净后,发布到 azure 就像是一种魅力。
【解决方案2】:

我也遇到了同样的问题,我刚刚从 visual studio 项目解决方案中删除了黄色标记文件,它对我来说很好。

【讨论】:

  • 谢谢,我从项目中排除了bin文件夹,发布成功了。
  • 我将黄色标记的文件(.csproj 中缺少的文件)包含到项目中,并且发布成功。
  • 这正是我所拥有的,删除此文件后它成功运行
【解决方案3】:

从项目中排除 bin(和/或)obj 文件夹并发布。 这对我有用

【讨论】:

  • 在我的情况下,它是解决方案中包含的 bin 文件夹。
【解决方案4】:

我最近将这个问题发布到 Azure。我最终删除了 bin 文件夹中的所有文件(删除了 bin 文件夹下的 Visual Studio 解决方案资源管理器中的所有文件,但将 bin 文件夹本身留空),并重建了项目。这似乎让视觉工作室很高兴并且天蓝色的发布工作。希望这会有所帮助

【讨论】:

    【解决方案5】:

    我删除了 bin & obj 文件夹以及 inetpub/wwwroot/myapp 的内容和问题解决

    【讨论】:

      【解决方案6】:

      这对我有用:手动删除 obj 文件夹,重建,然后发布。不知何故,obj文件夹中的一些权限被卡住了,删除/重新创建文件夹清除了错误。

      【讨论】:

        【解决方案7】:

        没有什么对我有用。 删除obj和bin文件-清理-更改webservice名称-缩短webservice名称。

        但是,

        +从 Visual Studio 扩展您的 Reference.svcmap。

        +更新参考。

        +并删除黄色警告个数据源。

        为我工作

        【讨论】:

          【解决方案8】:

          我最近遇到了同样的问题。 我实际上是通过搜索丢失的文件来追踪它的。

          错误原因:在 Visual Studio 中,我包含了该文件,后来从文件系统中删除了它。(但不是从 Visual Studio 中删除)。 VS 仍然有对该文件的引用。因此,一旦我从 VS 中删除了引用,我就能够成功发布!

          【讨论】:

            【解决方案9】:

            在记事本中打开 projectname.csproj 文件并删除 obj\debug\project name.csprojResolveAsseblyReference.cache 行

            【讨论】:

              【解决方案10】:

              我不得不删除发布配置文件,提交,然后从头开始重新创建发布配置文件。

              【讨论】:

                【解决方案11】:

                当我手动将 文件夹 复制到项目(在我的情况下为 ckeditor)中时,我遇到了类似的问题。它构建良好并且在本地运行没有问题。但是,在发布该文件夹时会被忽略。事实证明,我必须首先创建空文件夹,然后复制文件夹内容。 Visual Studio 需要知道该项目是创建它出现的,因为之后它在发布时被识别。

                【讨论】:

                • 也可以右键单击,选择添加 -> 现有项目
                【解决方案12】:

                此问题可能是由于将项目从一个解决方案移动到另一个解决方案或移动到另一个源代码管理。

                解决此问题的简单方法:

                1. 进行当前项目备份并从解决方案中删除当前项目。

                2. 将新项目添加到您的解决方案中,并从备份中包含您的文件并重建您的项目并完成。

                【讨论】:

                  【解决方案13】:

                  它的原因是你的项目从不同的环境转移。 要解决它,请通过右键单击“obj”文件夹从项目目录以及解决方案资源管理器中删除“obj”文件夹。

                  然后构建您的项目并发布它。它会正常工作。

                  【讨论】:

                    【解决方案14】:

                    我通过从我的项目中删除文件“packages.config”解决了这个问题,该文件被标记为丢失。之后,Publish 工作正常。

                    【讨论】:

                      【解决方案15】:

                      我不得不手动将 VS 要求的丢失文件复制并粘贴到 BIN 文件夹中。 .pbd、.xml 有时它们不会复制过来。

                      【讨论】:

                        【解决方案16】:

                        只需重命名 Nugets 的 Packages 文件夹即可。 Visual Studio 会自动获取所需的包,构建会成功,发布也会工作。

                        【讨论】:

                          【解决方案17】:

                          如果这对任何人都有帮助,对于我在 VS 2015 中的 MVC 项目,它是这个文件: 文件系统.pubxml.user 在发布配置文件目录中,包含它会导致编译错误,但删除它使其能够发布!

                          【讨论】:

                            【解决方案18】:

                            我删除了 Visual Studio 中所有现有的发布配置文件 -> 解决方案资源管理器 -> 我的项目节点 -> 属性 -> 发布配置文件 同样可以通过右键单击解决方案资源管理器中的项目 -> 发布 -> 配置文件选项卡 -> 管理配置文件 -> 删除所有配置文件来完成 现在从 Azure 下载相关配置文件,或者如果它已经保存在您的计算机上,则从您的目录中选择并选择它。 然后清理并重建项目。 确保您选择了项目是在发布模式下构建的,并且您还选择了“发布”发布 -> 设置 -> 配置 现在发布,它对我有用。

                            【讨论】:

                              【解决方案19】:

                              我在发布我的网站时也遇到了这个问题,在我的情况下,添加了参考,但在 bin 文件夹中它不存在,所以请重新安装输出中缺少的参考。我希望它有所帮助

                              【讨论】:

                                【解决方案20】:

                                在我的情况下,它是来自 Projects 文件夹的删除文件。它已添加到项目中,但不在源文件夹中。我发现它在visual studio中显示为感叹号:

                                当我排除文件表单项目发布开始工作

                                【讨论】:

                                  【解决方案21】:

                                  我在 vs2017 中遇到问题,我只是从 projectn 中排除 bin 和 obj 文件夹并发布项目。这是工作。

                                  【讨论】:

                                    【解决方案22】:

                                    我想补充一点,如果您使用的是 Visual Studio 2015 并且您已在任何项目中安装了 Microsoft.Net.Compilers NuGet 包,请确保此包版本不高于 2.4。

                                    这种组合不好的原因是因为 VS 2015 使用 MSBuild v14,如果版本 > 2.4,包需要 MSBuild v15 或更高版本。

                                    【讨论】:

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