构建成功,但发布失败

时间:2011-08-01 19:26:54

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

直到两天前,通过右键单击我的项目并单击上下文菜单上的“发布”按钮,我可以使用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 ==========

这是在尝试发布到localhost(用于调试目的)时

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

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移动到网站的虚拟目录中,然后我今天早上试图发布,并且一切都很顺利。

21 个答案:

答案 0 :(得分:36)

根据我的经验,这可能发生在源控件的不同分支中添加/删除文件时,不完美的合并会导致项目文件结构和实际文件结构发生分歧。

这可能是以下几个选项之一:

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

解决方案是查看源代码控制日志,并尝试识别针对上述问题的项目文件的错误合并,然后相应地修复项目文件。

答案 1 :(得分:17)

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

答案 2 :(得分:10)

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

答案 3 :(得分:4)

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

答案 4 :(得分:3)

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

答案 5 :(得分:3)

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

答案 6 :(得分:2)

对我来说没有用。 删除obj和bin文件清理更改webservice名称 - 缩短web服务名称。

但是,

+从visual studio扩展Reference.svcmap。

+更新参考。

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

适合我

答案 7 :(得分:1)

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

答案 8 :(得分:1)

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

错误原因:在visual studio中我已经包含了该文件,之后将其从文件系统中删除了。(但不是来自visual studio)。 VS仍然有对该文件的引用。所以一旦我删除了VS的引用,我就能成功发布!

答案 9 :(得分:0)

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

答案 10 :(得分:0)

就我而言,它是从“项目”文件夹中删除的文件。它已添加到项目中,但不在源文件夹中。我发现它在Visual Studio中显示为带有感叹号:

enter image description here

当我排除文件形式的项目发布开始工作时

答案 11 :(得分:0)

我在发布网站时也遇到了这个问题,在我的案例中添加了参考,但是在bin文件夹中没有,所以请重新安装输出中缺少的参考。希望对您有帮助

答案 12 :(得分:0)

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

答案 13 :(得分:0)

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

答案 14 :(得分:0)

以防万一,对于我在VS 2015中的MVC项目,它是以下文件:  文件System.pubxml.user 在发布配置文件目录中,包括该配置文件会导致编译错误,但删除该文件后便可以发布!

答案 15 :(得分:0)

只需重命名Nugets的Packages文件夹即可。 Visual Studio将自动获得所需的包,构建将获得成功,Publish也将起作用。

答案 16 :(得分:0)

我不得不手动复制并粘贴VS要求进入BIN文件夹的丢失文件。 .pbd,.xml有时他们不会复制。

答案 17 :(得分:0)

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

答案 18 :(得分:0)

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

之后构建项目并发布它。它会正常工作。

答案 19 :(得分:0)

由于将项目从一个解决方案移动到另一个解决方案或转移到另一个源控件,可能会出现此问题。

解决此问题的简单方法:

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

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

答案 20 :(得分:0)

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