Visual Studio 2013网站部署失败

5
我刚刚安装了VS 2013,从VS 2010升级而来。在2010中,创建Web部署包zip文件是可行的。但是,在使用VS 2013的发布Web功能发布到Web部署包时,我遇到了以下错误:

Web部署任务失败。(类型为'manifest',路径为'D:\ dev \ DMWeb \ DMWebClient \ obj \ Test \ Package \ DMWebClient.SourceManifest.xml'的对象无法创建。了解更多信息: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_EXCEPTION_WHILE_CREATING_OBJECT。)

Web发布活动选项卡中的详细信息如下:
使用D:\dev\DMWeb\DMWebClient\Web.Test.config转换了Web.config, 变成了obj\Test\TransformWebConfig\transformed\Web.config。 自动连接字符串转换Views\Web.config为obj\Test\CSAutoParameterize\transformed\Views\Web.config。 自动连接字符串转换obj\Test\TransformWebConfig\transformed\Web.config为obj\Test\CSAutoParameterize\transformed\Web.config。 将所有文件复制到临时位置以进行打包/发布:obj\Test\Package\PackageTmp。 打包为D:\dev\DMWeb\DMWebClient\obj\Test\Package\DMWebClient.zip。 C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.Publishing.targets(3883,5): 错误 ERROR_EXCEPTION_WHILE_CREATING_OBJECT:Web部署任务失败。(类型为“manifest”的对象和路径 'D:\dev\DMWeb\DMWebClient\obj\Test\Package\DMWebClient.SourceManifest.xml'无法创建。 了解更多信息: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_EXCEPTION_WHILE_CREATING_OBJECT。) 打包失败。
在VS 2010中,我必须以管理员身份运行它才能进行部署,在这里也是如此。我还尝试将完全控制权限授予项目文件夹的NETWORK SERVICE、LOCAL SERVICE、已验证用户和自己。
Package文件夹中,有PackageTmp文件夹(看起来不错),以及DMWebClient.SourceManifest.xml文件,仅此而已。在VS 2010中,那里有更多的文件。 DMWebClient.SourceManifest.xml包含:
<?xml version="1.0" encoding="utf-8"?>
<sitemanifest>
  <IisApp path="D:\dev\DMWeb\DMWebClient\obj\Test\Package\PackageTmp" />
  <setAcl path="D:\dev\DMWeb\DMWebClient\obj\Test\Package\PackageTmp" setAclResourceType="Directory" />
  <setAcl path="D:\dev\DMWeb\DMWebClient\obj\Test\Package\PackageTmp" setAclUser="anonymousAuthenticationUser" setAclResourceType="Directory" />
  <setAcl path="D:\dev\DMWeb\DMWebClient\obj\Test\Package\PackageTmp\App_Data" setAclResourceType="Directory" setAclAccess="Write" />
  <setAcl path="D:\dev\DMWeb\DMWebClient\obj\Test\Package\PackageTmp/DMWeb.config" setAclResourceType="File" setAclAccess="Read,Write" />
</sitemanifest>

在VS 2010中,包含DMWeb.config的最后一行不存在。除此之外,路径也是错误的。它应该在App_Data文件夹下。 DMWeb.configWeb.config中被指定为如下:
<appSettings file="DMWeb.config">

任何帮助都将不胜感激。

1
很奇怪,我不知道为什么会插入那个额外的setAcl。如果我没记错,我们已经有一段时间没有更改setAcl了。你需要这个包的setAcl吗?如果不需要,你可以通过将MSBuild属性IncludeSetAclProviderOnDestination设置为false来禁用它。你可以在发布配置文件(.pubxml文件)中进行设置。 - Sayed Ibrahim Hashimi
Sayed,谢谢你的回答。请看下面我的回答。我有一个旧的wpp.targets文件。删除它后使它工作了。VS 2013是否应用它找到的任何wpp.targets文件?感谢您提供IncludeSetAclProviderOnDestination提示。 - Ionian316
7个回答

7

如果您的项目中有任何文件已经被移动、删除或重命名,以至于Visual Studio无法找到它们,那么也可能会发生这种情况。


我刚刚因为这个确切的原因遇到了这个错误——我将一个项目移动到了另一个目录,而pubxml文件仍然相对于旧位置引用了一个发布后SQL脚本。 - Sam

5

我的错误几乎相同:

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.Publishing.targets (3883): Web部署任务失败。(类型为“manifest”的对象和路径“D:\ B \ 280 \ Binaries_PublishedWebsites \ ProjectName \ ProjectName.SourceManifest.xml”无法创建。了解更多信息: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_EXCEPTION_WHILE_CREATING_OBJECT。)

我发现原因在ProjectName.SourceManifest.xml文件中。

有一行:<appHostConfig path="Default Web Site/ProjectName" />

如果在构建机器上不存在此Web应用程序和站点,则会出现错误。一旦我在同一站点上创建了一个具有相同名称的虚拟Web应用程序站点,它就可以构建!

并通过删除带有MsBuild参数的该部分来解决:/p:IncludeIisSettings = false /p:IncludeAppPool = false(我将这两个设置为true,因此仅在您将它们设置为true时才适用)


谢谢,这正是我遇到的问题。 - Fabricio

2

我想补充一下,因为其他答案都没有解决我的问题,虽然这可能更与Lightswitch Web Deploy相关,而不是ASP.NET Web Deploy(尽管OP没有指定哪个)。

标准的Lightswitch模板解决方案中有三个项目。其中两个可能被命名为lightswitchapp.HTMLClientlightswitchapp.Server。这两个项目都不应该被部署!您应该部署第三个项目lightswitchapp

我一直在遇到像这样的错误,这导致我来到了这个页面。

Web deployment task failed. (Object of type 'manifest' and path 'manifest xml hidden' cannot be created. Learn more at: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_EXCEPTION_WHILE_CREATING_OBJECT.)


2
我发现我有一个来自VS 2010的旧的.wpp.targets文件,它被称为~DMWebClient.wpp.targets。在VS 2010中,通过重命名它,它将被忽略并不会应用。看起来VS 2013会应用任何.wpp.targets文件,无论文件名如何。
通过删除该文件,Web Deploy又可以正常工作了。

1

关于Lightswitch Web Deploy的回答非常好,在任何地方都找不到关于它的任何信息...一直认为微软故意破坏了它,因为他们不想再支持LightSwitch了... 无论如何,一旦您按照LightSwitch模板中发布主项目的步骤进行操作,就会出现一个新问题,即如果将其推送到本地IIS,则涉及到发布参数。 对于所有遇到困难的人...首先安装

  • httpPlatformHandler_amd64.msi
  • WebDeploy_amd64_en-US.msi
然后,确保“Web部署代理服务”正在运行作为服务。然后,在Visual Studio(我使用的是VS2015社区版)中,在向导的发布设置选项卡中,确保您有类似以下内容的设置:
- 服务URL: http://localhost/MSDEPLOYAGENTSERVICE - 站点/应用程序: 默认网站\trax01
其中,trax01是在默认网站下运行的您的Web应用程序的名称(请注意设置标签中反斜杠“\”与前向斜杠“/”不同的情况)。希望这可以帮助其他人,因为这个问题让我很苦恼! :)

1
同样的异常在Visual Studio 2019中仍可能发生。对我来说,额外的细节是“类型为'manifest'且路径为'manifest xml hidden'的对象无法创建”。
在我的情况下,问题出在{ProjectName}.wpp.targets文件中的MsDeployDeclareParameters项上。它试图为下载文件夹设置ACL权限,但该文件夹不包含任何文件,因此在暂存区中不存在。
将文件添加到下载文件夹中解决了这个问题(从{ProjectName}.wpp.targets文件中删除MsDeployDeclareParameters条目也可以)。

0

我尝试了很多解决方案,通过更新安全性到TLS 1.2 (X)。

从变量和密码中删除*或特殊字符。

但后来我发现,在web.configconnectionString密码中有*

我更改了我的密码,然后它开始对我起作用了。


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