43

直到两天前,我还可以通过右键单击我的项目并单击上下文菜单上的发布按钮来使用 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 移动到网站的虚拟目录中,然后只是为了好玩,我今天早上尝试发布,一切正常。

4

22 回答 22

40

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

这可能是几个选项之一:

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

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

于 2011-11-16T18:14:48.320 回答
18

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

于 2016-04-29T07:15:54.087 回答
15

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

于 2015-11-09T10:03:47.483 回答
4

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

于 2015-02-16T17:56:17.690 回答
4

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

于 2016-11-16T17:37:45.517 回答
3

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

但总而言之,

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

+更新参考。

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

为我工作

于 2017-06-02T07:18:23.040 回答
3

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

于 2016-01-13T13:42:53.657 回答
2

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

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

于 2017-02-05T12:01:04.967 回答
1

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

于 2018-11-15T19:57:56.933 回答
1

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

于 2016-06-28T11:23:39.460 回答
0

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

于 2014-02-07T14:38:44.017 回答
0

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

解决此问题的简单方法:

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

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

于 2015-04-19T07:58:52.783 回答
0

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

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

于 2015-06-10T08:18:29.067 回答
0

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

在此处输入图像描述

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

于 2020-07-16T10:32:17.850 回答
0

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

于 2019-03-27T10:36:12.100 回答
0

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

于 2016-09-02T09:17:16.797 回答
0

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

于 2018-11-16T11:25:32.417 回答
0

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

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

于 2021-12-28T17:36:50.787 回答
0

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

于 2020-10-25T09:31:31.137 回答
0

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

于 2018-10-12T15:07:11.963 回答
0

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

于 2015-10-19T22:07:41.767 回答
0

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

于 2015-11-02T15:41:44.890 回答