Visual Studio 2012网页发布不复制文件。

232

我在VS 2012中有一个Web应用程序项目,当我使用Web发布工具进行构建时,它可以成功构建但是没有将任何文件复制到发布目标(在此情况下为文件系统)。

如果我查看构建输出,我可以看到所有东西都被正确地复制到了obj\ Release \ Package \ PackageTmp \中,但是在构建输出中,我只能看到这个:

  

4> 构建项目"{Project}.csproj"完成。
  4> 删除现有文件...
  4> 发布文件夹/...
  4> ========== 构建:3已成功,0失败,1最新,0跳过==========
  ========== 发布:1已成功,0失败,0跳过==========

尽管它说发布成功,但发布目录中没有任何文件。

我在多个项目中看到过这种情况,有时候似乎解决方案/平台配置会引起这个问题,但我还没有找出确切的原因。

有其他人见过这种情况吗?或者有什么办法可以让它正常工作吗?

更新:

我可能已经找到了一个解决方法。我又遇到了这个问题,然后我在调整发布设置。一旦我将设置选项卡中的所选配置更改为另一个配置,然后再改回我想使用的配置,所有的文件又开始发布了。希望这个方法也适用于未来的其他项目。

更新2:

我在Microsoft Connect上发布了一个错误,并从VS Web Developer团队的一位开发人员听到了回复。他说他们已经在内部版本中解决了这个问题,并将很快发布一个更新版本的发布工具来解决这个问题。

更新3:

在Visual Studio 2012 Update 2中最近已解决此问题。


14
这件事发生在我使用 Windows 8 和 Visual Studio 2012 的时候。我刚刚创建了一个新的发布配置文件,现在它可以工作了!可能是 VS 2012 中的一个 bug。 :/ - T.Ho
3
我有同样的问题。删除并重新创建发布配置文件对我起到了作用。 - Tommy Jakobsen
3
对我来说,删除并重新创建个人资料是解决问题的办法。 - Michael Wells
1
在我的情况下,来回切换调试和发布模式没有帮助。创建新配置文件也没有用。物理删除所有发布配置文件也没有用。重新打开解决方案或 Visual Studio 也没有用。截至目前(VS 2012 Upd.3),这个问题还没有被解决。Visual Studio 经常让我发布失败。 - lapsus
3
在 Visual Studio 的更新 2 和更新 3 中都没有解决这个问题。检查“已采纳答案”后面的最受欢迎的答案(这不是解决方案)。只需编辑个人资料,在“设置”选项卡中从列表中选择正确的配置(如果 release 是正确的,选择 debug,保存,然后再次编辑并选择 release)。保存并发布。 - firepol
显示剩余14条评论
31个回答

106

遇到了同样的问题。解决方法是将发布设置从Release更改为Debug。重新发布,然后再改回Release...


耶!这是正确的答案。在我的情况下,我不使用默认的“Release”或“Debug”配置文件,而是使用“DEV”,“STAGE”和“LIVE”。我发现例如对于同事通过TFS下载我的解决方案的STAGE,配置文件错误地设置为“Release”(所有其他配置文件也是如此)。所以我只需要纠正它并将其指向“STAGE”(或其他配置文件的DEV / LIVE)。发布成功了。谢谢。 - firepol
运行得非常好。这个应该是被接受的答案。 - Aycan Yaşıt

78

这可能是由于使用vs2012的RC版本创建的解决方案/项目引起的。我几个月前也遇到了这个问题,通过确保我的解决方案构建配置与项目配置匹配来解决了该问题...

最近我在使用VS2012 Express for Web打开原始在vs2012RC中创建的相同解决方案时遇到了同样的问题。我完全按照原帖作者所建议的做法去操作并成功解决了我的问题。

以下是将我找到答案的线程:

connect.microsoft.com/VisualStudio/feedback/details/746321/publish-web-application-fails

对话中一个有用的回复是:

Microsoft在6/13/2012发布的信息:嗨,Andrew

这是我们处理解决方案配置和项目配置时的一个错误。我们错误地假设它们会相同(例如,解决方案的Release | x86也会将每个项目设置为Release | x86),这导致我们在发布文件时使用错误的构建属性。

解决方法是使解决方案配置和构建配置匹配。这个问题将在Visual Studio 2012的下一个版本中得到解决。

谢谢, - Jimmy Lewis SDET,Visual Web Developer团队


8
这个问题发生在我的一个全新的Visual Studio 2012项目上。以前它可以通过FTP发布,但现在当我尝试发布时,它会像上面所说的那样假装成功,却什么也没有推送。它确实将输出构建到obj目录中,但实际上从未将其复制到服务器上。然而,更改配置的技巧确实可以解决这个问题。 - Chris Moschini
12
嘿!SP2还是有问题啊! - user1228
6
我刚遇到了相同的问题并发现是由于发布设置默认为“Any CPU”,但我的解决方案设置为“x86”。在发布设置中将设置更改为x86即可解决该问题。 - Sam
谢谢@Sam。将“Any CPU”更改为“x86”起作用了。然后我又将其改回“Any CPU”,现在可以正确发布了。 - Amanda
感谢 @iniki。删除个人资料并使用新个人资料发布对我有用。 - Abhimanyu Garg
显示剩余2条评论

40

进一步说,当您创建发布配置文件时,将创建两个文件。

  • NewProfile.pubxml
  • NewProfile.pubxml.user

如果您从源代码控制打开具有这些文件的PublishProfile文件夹中的项目,则只有.pubxml文件,而没有.pubxml.user文件。因此,当您打开项目时,会动态创建.pubxml.user文件。 动态创建新的.pubxml.user文件时,其XML如下:

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
</Project>

创建新配置文件时,它会创建类似以下的XML:

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <TimeStampOfAssociatedLegacyPublishXmlFile />
    <EncryptedPassword />
  </PropertyGroup>
</Project>
如果您将<PropertyGroup>节点放入.pubxml.user文件中,则您的发布配置文件将重新开始工作。

5
+1 对我而言似乎有效。如果您创建一个新档案后打开两个档案进行比较,会使此过程稍微容易一些。我还发现如果是团队合作,需要将这两个档案都提交到源代码控制中。 - Deano
@Deano 检入任何 *.user 文件的问题在于您不再拥有个人(本地)项目定制的能力。用户文件的目的是允许各个团队成员拥有自己的本地设置。 - Dave Riedl
除了将“.pubxml.user”文件添加到源代码控制中,还有其他解决方案吗? - Jonas at Software Journey
我们不会将 *.user 文件提交到源代码控制中,但是顺带一提,我们也不使用 Visual Studio 中的发布配置文件,因为我们的持续集成服务器和构建过程会管理所有这些内容... - Brett Rigby

21

一种简单的解决方法是删除您的发布配置文件并创建一个新的。

当您右键单击解决方案并选择发布时,会设置一个配置文件。删除这个配置文件并创建一个新的。

这将解决此问题。

我曾经因从 2010 切换到 2012 而遇到过这个问题。


这对我来说有效,我所做的是删除本地机器上的配置文件并重新创建它们。这不会影响其他开发机器。 - Jean Jimenez
我在将项目从vs2013切换到vs2012时遇到了这个问题,但是这个方法完全解决了问题。 - Sara Nikta Yousefi
这对我有用。我使用了以下步骤来重建我的(文件系统)发布配置文件:https://dev59.com/EGMl5IYBdhLWcg3wmoHS#20616521 - DeveloperDan

9

我曾经遇到过同样的错误,后来我将设置从发布版改为调试版,问题得到了解决。


8
我遇到了同样的问题,但是这个帖子中的答案都没有对我起作用。我的问题是有一个目录包含由我的应用程序动态生成的静态HTML文件。整个目录都没有被发布。
对我有效的解决方案可以在这里找到:这里
引用:

我曾经遇到一个问题,觉得我应该记录下来,就是发布项目时某些文件类型没有被上传。

受影响的文件类型是.pdf文件和.rtf文件。

造成这种情况的原因是Visual Studio没有将这些文件扩展名识别为需要发布的文件。幸运的是,这可以在Visual Studio中更改。

选择未被复制的文件,在属性中确保生成操作设置为内容

如果这不起作用,可以尝试以下方法。

项目菜单下选择打包/发布Web并注意此下拉列表:

enter image description here

尝试将其更改为此项目文件夹中的所有文件。


这对我的情况起作用了 - 当只有一些文件被发布时。 - AndrewRalon
这只能起作用是因为文件没有正确地包含在项目中。请参见下面的答案以了解根本原因和解决方案:https://dev59.com/J2ct5IYBdhLWcg3wSbnY#40721544 - AndrewRalon
你指的是下面哪个答案? - Tomas Kubes

7

这是因为 .pubxml.user 文件包含发布所需的信息,而该文件不应被包括在源代码控制中。为了解决此 VS 错误,请将 .pubxml.user 文件中的信息复制到 .pubxml 文件中。相关属性包括:

<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>

把这些内容放到你的.pubxml文件中,然后就可以开始了。

7
我尝试了所有这些解决方案,但只有这个能够每次都起作用。
我们只需将“发布方法:”从“文件系统”更改为“Web Deploy”,然后立即将其改回“文件系统”。

是的,这也是最终对我起作用的(尝试了以上所有其他建议)。这是使用vs2010。 - Karen

5

我在几个项目中都遇到了同样的问题,只有Web项目受到影响。删除并重新创建配置文件只能解决问题一次。此外,比较生成的publishxml没有发现任何差异,因此似乎与配置文件无关。

目前,OP提到的反复更改构建问题的解决方法似乎是唯一可靠的解决方案。


同样的解决方法也是我唯一的修复方法。为了澄清,步骤如下:构建>发布。选择左侧的“设置”选项卡。将“构建配置”更改为其他任何内容。您会发现发布配置文件名称旁边现在有一个星号(*)-这表明已经解决了该错误。将构建配置更改回所需的内容。按照正常流程进行发布。问题已解决。 - Chris Moschini

4

这里我们遇到了相同的问题。

我们只需将“发布方式:”从“文件系统”更改为例如“Web Deploy”,然后立即将其改回“文件系统”即可。


this should be at the top - JoeBrockhaus
这个问题现在已经通过Visual Studio 2012 Update 3得到了修复。 - KoalaBear

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接