问题标签 [msbuild-wpp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
31 回答
148608 浏览

asp.net - Visual Studio 2012 Web 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 开发团队的一位开发人员的回复。他说他们已经在内部构建中解决了这个问题,并将很快发布发布工具的更新来解决这个问题。

更新 3:

这最近已通过 Visual Studio 2012 Update 2 修复

0 投票
3 回答
1964 浏览

msbuild - 在解决方案构建时创建网站 webdeploy 包

我有一个 VS 2010 WCF 服务解决方案,我想通过 web 部署包部署到 IIS 7.5 服务器。我希望在构建 WCF 服务项目时生成 Web 部署包。我已经看到了如何在构建后通过将用于 Web 部署的 MS Build 目标导入 .csproj 来启动 Web 部署打包的其他示例。但是我不能把我的头绕在我可能会或可能不会这样做的事情上。

我希望我的 web 部署包在目标服务器上部署时执行以下任务:

  • 在目标服务器上创建一个带有应用程序池的新网站,以使用 NETWORK SERVICE 身份的目标框架 4.0
  • 添加站点绑定以在特定端口上启用 net.tcp 并启用 http 和 net.tcp 协议
  • 在这个新站点下创建一个 Web 应用程序以指向特定的文件系统文件夹
  • 运行 .bat 文件以启动几个 net.tcp 相关服务以支持非 http WCF 激活

从我读过的关于 web 部署的任何内容来看,其中一些可以通过 webdeploy 清单文件完成,包括特定的提供程序。我不明白的是告诉 MS 构建打包机制传递提供程序以包含在清单和值中。我对 Web 部署相当陌生,任何解决此问题的帮助/指针将不胜感激。

0 投票
1 回答
5194 浏览

iis-7 - 通过 MSBuild 在 Web 部署期间设置 ACL

我在 TeamCity 中运行了一个大部分工作的 Web 构建和部署配置,它基本上使用 MSBuild 将站点自动部署到 Web 服务器。默认情况下,MSDeploy 将目标服务器上的所有内容都设置为只读,我需要 AppPool 身份才能对一个文件夹具有写入权限。

我发现Kevin leetham 的一篇文章让我了解了 90% 的情况。Kevin 描述了如何通过创建一个名为 ProjectName.wpp.targets 的文件来连接到 MSBuild Web 发布管道,如下所示:

几乎是工作,它让我发疯。ACL 被添加到清单中,但问题是它会根据构建位置生成绝对路径,而不是相对于目标服务器上的 IIS Web 应用程序。生成的清单是这样的(一些名称已更改以保护无辜者):

这实际上看起来是正确的,最后一行是我来自 wpp.targets 文件的自定义 ACL。但是,当 MSDeploy 将其发送到目标服务器时,会发生以下情况:

整个事情都落在了我的自定义 ACL 路径上,该路径使用绝对路径名而不是相对于IisWebAppName。我不知道为什么!

请帮忙 :)

0 投票
1 回答
6041 浏览

visual-studio-2012 - 从 TeamCity 发布 vs2012 解决方案

我正在使用 Visual Studio 2012 和发布功能。我创建了一个发布配置文件,将我的应用程序部署到开发服务器,并且在我的机器上从 vs2012 执行时效果很好。这是我的问题;在开发服务器上,我还安装了 TeamCity,我想在构建完成后触发发布。所以我创建了一个简单的构建步骤,如下所示:

执行此步骤时,我收到以下错误:

Ci 配置文件包含一个用户名和密码,当我在我的机器上从 Visual Studio 运行发布时可以使用该用户名和密码。我也尝试在构建步骤中将用户名和密码作为参数传递,但我得到了相同的结果。我是否需要在管理员帐户下运行 TeamCity 服务才能使其正常工作?所有建议表示赞赏。

0 投票
1 回答
1219 浏览

visual-studio-2012 - 为构建服务器自定义 Visual Studio 2012 的 Web 发布管道 (WPP)

我正在为大型企业服务基础架构创建构建和部署基础架构。我们将 TFS Build 2012 用于构建服务器,使用 Visual Studio 2012 生成 WPP 部署包,并使用 MSDeploy 2.1 执行实际部署。(我们不能使用 MSDeploy 3,因为它存在许多错误 - NTLM 身份验证被 WMSvc 破坏等)。

我创建了一个“Project.wpp.targets”文件并添加了以下属性:

当编译发生在构建服务器上时,OutDir 将不同于 OutputPath 并且 WPP 将被激活。构建输出以下文件:

里面的 project.zip 是:

问题 1 - SourceManifest.xml 文件是做什么用的,为什么它不在 zip 包中?似乎创建用于部署的 zip 文件包的全部原因是它完全自包含。那个 SourceManifest 文件是“松散的”——我们不能再把一个 zip 文件扔到我们的部署文件共享上。为什么不在包裹里?它还指向构建服务器上的特定路径!

问题 2 - Archive.xml 文件的用途是什么?SourceManifest.xml 似乎有些多余 - 我看到一个提供程序,许多提供程序等。在 Microsoft 文档中,他们在包中提到了“manifest.xml”。这个文件看起来像清单,但它被称为“archive.xml”。文件名重要吗?manifest.xml 与archive.xml 不同吗?它们与 SourceManifest.xml 有什么关系,它看起来相似但同时又不同?

问题 3 - systemInfo.xml 的用途是什么?它似乎列出了在构建服务器上为 IIS 角色安装的所有组件。例如,如果我在本地机器上的命令行运行构建,它会列出已安装的 .NET 2.0 和 4.0 以及我机器上各种 IIS 组件的一些 True/False 值。问题是这些设置与我实际想要部署的内容无关!MSDeploy 是否查看过此文件?可以禁用它的生成吗?我绝对不希望来自构建服务器的配置工件影响生产!

0 投票
1 回答
7882 浏览

visual-studio-2010 - 错误:项目中不存在目标“GatherAllFilesToPublish”,但在 v10.5 文件夹中

我一直在这个问题上四处走动。我有一个内置于 VS2010 SP1 的 ASP.NET MVC 3 Web 应用程序。当我尝试发布到本地文件系统时,出现错误

项目中不存在目标“GatherAllFilesToPublish”。

它失败了。我已按照为什么会收到错误“目标 GatherAllFilesToPublish 不存在”中描述的答案进行操作?但这并不能解决我的问题。

我已经为 VS2010(2012 年 10 月)安装了 Azure SDK 1.8,试图让我的系统恢复工作。通过此安装,我在我的 MSBuild 树中看到以下文件/文件夹。

Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Targets,日期为 2011 年 1 月 18 日。

该文件未提及“GatherAllFilesToPublish”

安装 Azure SDK 后,我有另一个文件/文件夹:

Microsoft\VisualStudio\v10.5\Web\Microsoft.Web.Publishing.Targets,日期为 2012 年 9 月 27 日。

该文件确实包含“GatherAllFilesToPublish”目标。

显然我在 VS2010 中的发布功能没有使用 v10.5 文件夹的目标。有没有人有任何建议来解决这个问题?

谢谢,

0 投票
1 回答
3293 浏览

visual-studio-2012 - 为什么 Web Publish/Deploy 找不到我的 Web.config?

我刚刚从 codeplex 克隆 OrchardCMS,构建它并尝试使用 Visual Studio 的“发布”命令将其部署到我的 Web 托管服务。

没有文件被发布并且发布失败并出现以下错误:

我检查了源代码,文件在那里并且在正确的文件夹中。那么这个错误消息实际上试图告诉我什么?这是怎么回事,我该如何解决?

0 投票
1 回答
3688 浏览

msbuild - 尽管已启动 Web 部署服务,但 msdeploy 无法到达目的地

正如您从标题中看到的那样,我在部署到远程 IIS 时遇到了一些问题。这是我到目前为止所做的:

  • 我在 Windows Server 2008 上设置了一个运行 IIS7 的虚拟机。
  • 我已经桥接了虚拟机网络适配器。
  • 我已经安装并启动了“Web 部署代理服务”以及“Web 管理服务”。

  • 我还创建了一个新的 IIS 管理器用户并授予他访问相关网站的权限。

本地管理员和 iisman 都可以访问我要部署到的站点

现在,当我这样做时,部署本身就可以工作,例如:

然后部署应用程序,我可以从浏览器调用它。

更新:它也适用于这个命令,所以应该回答 James Woolfenden 关于我是否有权访问 msdeploy 网络服务的问题:

但是,我想使用PackageWeb-Approach(也在此处描述)。
所以我从 Visual Studio 2012 创建了一个我想要部署的 WebDeploy-Package。部署它通常似乎也没有问题,因为我让它在我的本地计算机上运行。

我的本地 IIS 和我的 VM 中的 IIS 都具有相同的网站结构,所以我只需要在调用 Publish-Interactive.ps1 脚本时更改“计算机名”、“用户名”和“密码”为了让它工作,但是当我这样做时,我不断收到错误消息

但这让我感到困惑,因为我实际上通过 WebPlatformInstaller 安装了 Web Deploy,并且 Web 管理服务正在运行。我还尝试从我的主机 ping 我的虚拟机并且它正在通过。出于测试目的,我也完全关闭了 VM 中的防火墙。

所有防火墙配置文件均已关闭

但我仍然收到相同的错误消息。

谁能引导我朝着正确的方向前进?我错过了什么?

0 投票
1 回答
2141 浏览

console-application - 如何使用 Web 发布管道和 Web 部署 (MSDEPLOY) 发布控制台应用程序?

我想使用 Web 部署将 Visual Studio“控制台”应用程序发布到目标系统上的文件夹。

我有一些运气,并且能够生产出类似于我需要的东西,但不完全是。

我已将以下内容添加到控制台 .csproj:

添加了以下projectName .wpp.targets 文件

我添加了以下projectName .wpp.targets:

然后我编辑 .SetParameters.xml 文件,如下所示:

然后,当我使用生成的 .cmd 文件进行部署时,我会将所有文件部署到 C:\company\project\bin。

这还不错,但我想做得更好。特别是,我想省略“bin”文件夹并将所有文件放在“C:\company\project”文件夹中,并且我希望能够指定 ACL

有没有人能够解决这些问题?

0 投票
1 回答
1093 浏览

tfs - 使用 Microsoft MSBuild 发布目标构建管道?

我正在尝试创建一个Build Pipeline. 我很好奇我是否能够利用现有的 Microsoft 发布 msbuild 目标,或者我是否需要从头开始编写自己的目标。

我有一个大型网站项目(不是 Web 应用程序)。

构建管道如下:

  1. 签到发生
  2. CI触发构建调用01 Commit Stage
  3. 01 Commit Stage自动触发02 Prepare for deployment
  4. 02 Prepare for deployment自动触发03 UAT

这是我希望在每个阶段发生的事情:

  • 01 提交阶段
    • 所有项目文件均已构建
    • 运行单元测试
    • 该网站通过 AspNet_Compiler 运行
  • 02 准备部署
    • 使用先前构建的输出
    • 然后通过 AspNet_Merge.exe 运行输出,以将已编译的 dll 合并到单个版本化程序集中。
    • 将输出工件存储为可部署
  • 03 UAT
    • 上一步中的工件被部署到 QA 进行测试。

我的问题是:

In the second build, how do I skip the build target and simply point the existing Microsoft publishing pipeline to the existing output? Or would I just be better building my own set of MSBuild targets to do exactly what I need?

到目前为止,我最高兴的是建立自己的管道,但不禁觉得我错过了一些 MS 的优点。