Visual Studio 2012 Web Publish不会复制文件

Jef*_*app 229 asp.net asp.net-mvc visual-studio-2012 msbuild-wpp visual-studio-publish

我在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修复了此问题

小智 104

同样的问题.解决方法是将发布设置从Release更改为Debug.重新发布然后更改回发布版...


小智 78

这可能是由使用vs2012的RC创建的解决方案/项目引起的.几个月前发生在我身上并通过确保我的解决方案构建配置与我的项目配置相匹配来解决问题...

我最近在使用VS2012 Express for Web打开最初在vs2012RC中创建的相同解决方案时遇到了同样的问题.我完成了原始海报的建议并解决了我的问题.

以下是引导我回答的主题:

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

上面对话的相关回应对我有帮助:

由Microsoft发布于2012年6月13日中午12:00

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

解决方法是使解决方案配置和构建配置匹配.此问题将在Visual Studio 2012的下一个版本中修复.

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

  • 嘿! 在SP2中它仍然存在! (12认同)
  • 在新的Visual Studio 2012项目上,我遇到此问题.它在过去通过FTP发布,但现在当我尝试发布时,它完全如上所述 - 它假装,说它成功了,并没有任何推动.它确实将输出构建到obj目录,但它实际上从未将其复制到服务器.更改配置技巧确实解决了它. (8认同)
  • 我只是遇到了同样的问题,并意识到这是因为发布设置默认为"任何CPU",但我的解决方案设置为"x86".将发布中的设置更改为x86修复了该问题. (6认同)
  • 删除配置文件并再次创建将起作用.谢谢. (2认同)

Eri*_*ild 39

更进一步.您有两个在创建发布配置文件时创建的文件.

  • NewProfile.pubxml
  • NewProfile.pubxml.user

当您从源控件在PublishProfile文件夹中打开包含这些文件的项目时,它只包含.pubxml文件而不是.publxml.user文件,因此它会.publxml.user在您打开项目时动态创建文件.当它在运行中创建新.publxml.user的时,xml看起来像:

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
</Project>
Run Code Online (Sandbox Code Playgroud)

创建新配置文件时,它会创建如下所示的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>
Run Code Online (Sandbox Code Playgroud)

如果您获取<PropertyGroup>节点并将其放入.pubxml.user文件中,您的PublishProfiles将再次开始工作.

  • +1这似乎对我来说.如果打开这两个文件并在创建新配置文件后对它们进行比较,则会更容易一些.我还发现,如果在团队中工作,则需要将两个文件都检入源代码控制. (5认同)

JGi*_*tin 21

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

当您右键单击解决方案并选择发布时,您将拥有一个配置文件集.删除它并创建一个新的.

这将解决它.

从2010年到2012年,我遇到了这个问题


Sta*_*ser 9

我有同样的错误,我将设置从发布更改为调试,问题解决了..


Cha*_*ley 8

我有同样的问题,但是这个帖子中没有一个答案适合我.我的问题是有一个目录包含动态生成的(由我的应用程序)静态HTML文件.整个目录尚未发布.

在我这里找到适合我的解决方案:

我回过头来想到我应该记录的一个问题是我发布项目时没有上传某些文件类型.

有问题的文件类型是.pdf文件和.rtf.

发生这种情况的原因是因为这些文件扩展名未被识别为需要Visual Studio发布.幸运的是,这可以在Visual Studio中进行更改.

选择未复制的文件.在Properties中,确保将Build Action设置为Content.

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

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

在此输入图像描述

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


Chr*_*nes 7

这是因为.pubxml.user包含要发布的必需信息,并且该文件不会(也不应该)包含在源代码管理中.要修复此VS错误,请将.pubxml.user文件中的信息复制到.pubxml文件中.相关的属性是:

<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
Run Code Online (Sandbox Code Playgroud)

把它们放在你的.pubxml中你应该很高兴.


小智 7

我尝试了所有这些解决方案,但这是每次都有效的解决方案.

我们只需将"发布方法:"从"文件系统"更改为"Web部署",然后立即将其更改回"文件系统".


小智 5

我对几个项目有同样的问题.唯一受欢迎的似乎是网络项目.删除和重新创建配置文件只能解决一次问题.另外,比较生成的publishxml没有产生任何差异,因此它似乎与配置文件无关.

OP提到的来回改变构建问题的解决方案似乎是目前唯一可靠的解决方案.