问题标签 [msdeploy]

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 投票
1 回答
549 浏览

msbuild - ASP.NET 4 部署 MSBUILD

我正在使用 VS2010 和 Web 部署项目来为我的 Web 应用程序创建一个发布包。在 WDP 中,我创建了一些构建任务,例如转换 web.config、创建一些目录和删除一些文件。

现在,我已将 Web 应用程序迁移到 ASP.NET 4,并且我一直在研究 VS2010 中称为 Package/Publish 的此功能。是否可以使用此功能并添加自定义 MSBUILD 任务,例如 WDP?

如果默认的 VS2010 设置也可以,我想摆脱 WDP 插件。

0 投票
3 回答
3679 浏览

visual-studio-2010 - Web 部署:根据项目配置名称排除目录

我想删除一些图像资源,具体取决于我使用 MsDeploy 发布的版本。我为不同的客户端构建了三个版本,它们基本上是另一个主题,并且有很多配置转换来正确设置他们的环境。

在部署到客户端 2 时,我不想包含客户端 1 的图像资源。

一直将其用作参考,以使我在自定义 msdeploy 的第一步中遇到困难,并且效果很好,但我不知道获取配置名称的变量是什么。

甚至可以排除所有然后只包括需要的那个?

0 投票
2 回答
10766 浏览

.net - 具有多个环境的 MsBuild 和 MsDeploy

是否有将解决方案配置映射到环境并使用 MsDeploy 为每个环境打包的良好模式?

最短版本:获取此文件,并尝试更改 .msbuild 文件以创建一个包。


细节

我有一个包含大量库和 ASP.NET MVC 应用程序的解决方案。我使用调用主解决方案的 msbuild 文件驱动构建,然后执行其他操作。我想使用新的 msdeploy 打包来准备一个 .zip 文件以供以后分发,但我遇到了各种困难。

我的解决方案有 4 种配置:LocalDevTestProd,它们与我想要映射到的环境相匹配。在该解决方案中,所有库都具有DebugRelease往常一样的模式。例如,在Local解决方案模式下,所有库都在模式下编译Debug。然后,主应用程序具有与解决方案匹配的环境,以便我可以拥有Web.Dev.config等等,这似乎是使用事物的自然方式。

如果我这样打包:

我遇到了一个问题,Configuration=Local即错误地映射到Site.vbproj引用的库项目,并且无法编译它们。


我看到了两种可能的解决方案:一种我无法正常工作,另一种非常难看。

尝试 1

我尝试Package通过解决方案调用目标(在此示例中,“应用程序”是 Site 项目所在的解决方案文件夹......我已经为这篇文章简化了内容,因为解决方案中实际上有多个应用程序。)

我认为这种SolutionFolder\ProjectName:Target语法是如何做到这一点的,因为:Clean运行......但是,这会抛出


尝试 2

现在是丑陋的解决方案:如果我修改我的所有库以为这 4 个解决方案配置添加 4 个附加配置,它就可以工作。但是,如果我以后想与具有不同环境的项目共同开发共享库,这很丑陋,而且确实是一个糟糕的计划。此外,这些环境与库无关,仅在使用库的顶级应用程序的上下文中才有意义。味道不好。


嗯?

我喜欢解决方案中的多个环境,以及花哨的新 Web.config 替换东西,但我不知道Package在这种情况下如何调用 msdeploy 任务,以便我可以在 TeamCity 中构建包。

(请注意,我可能不想调用 msdeploy 命令行,因为它用于将 IIS 应用程序转换为包。不是我在这里所做的。)


样本

同样,我在这里完全被难住了,所以如果你想帮助实验,我已经把这个示例解决方案放在一起。

0 投票
9 回答
21506 浏览

iis - 当参数有空格时,如何从 powershell 调用 msdeploy?

我在尝试从 powershell 脚本发送到 msdeploy 的参数中遇到空格问题。

还有许多其他相关文章,但都没有解决问题。
使用 Power Shell 和 MSDeploy 的问题。
类似的不起作用的 SO 问题:如何在 powershell 中使用带空格和引号的参数运行 exe
PowerShell BUG:执行需要引号和变量的命令实际上是不可能的
另一个不起作用的 SO 问题:在 PowerShell 2.0 中传递参数

当我让它变得更复杂时,最简单的成功然后失败的例子就是转储默认网站。

$msdeploy = "C:\Program Files\IIS\Microsoft Web Deploy\msdeploy.exe"
&$msdeploy -verb:dump -source:appHostConfig=`'默认网站`' -verbose
==SUCCESS

这个?

$sitename="default web site"
&$msdeploy -verb:dump -source:appHostConfig=$sitename -verbose
==FAIL 并出现以下错误
msdeploy.exe:错误:无法识别的参数 '"-source:"appHostConfig=default'。所有参数必须以“-”开头。
在 C:\xxx\test.ps1:122 char:6
+ &
+ CategoryInfo : NotSpecified: (Error: Unrecogn...begin with "-".:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
错误计数:1。

以下变体也失败
了 #FAIL
$sitename=`'default web site`'
$sitename=`'"default web site"`'
$sitename="`'default web site`'"
$sitename="default web site"
$sitename="'默认网站'"

&$msdeploy -verb:dump "-source:appHostConfig=$sitename" -verbose
&$msdeploy -verb:dump -source:appHostConfig="$sitename" -verbose
&$msdeploy -verb:dump -source:appHostConfig='$站点名' -verbose
&$msdeploy -verb:dump -source:appHostConfig=`'$sitename`' -verbose
&$msdeploy -verb:dump -source:appHostConfig=`"$sitename`" -verbose

我不知所措。和我一起工作的每个人都不知所措。说真的,这很糟糕。我喜欢 Powershell。我喜欢 msdeploy。我不能说我喜欢把它们放在一起。看起来专注于 API 而不是 cli 可能更容易。

编辑:

Emperor XLII 建议的字符串数组中的参数效果很好。以下文章中介绍了另一种解决方案:将 MSDeploy 与 PowerShell 结合使用的试验和磨难

0 投票
5 回答
7291 浏览

deployment - TFS2010 构建定义部署到多台服务器?

我一直在使用 MSDeploy 研究 TFS2010 的新构建和部署功能。到目前为止,一切进展顺利(尽管很难找到有关特定场景的信息)。

我可以修改我的构建定义以指定要部署到的 2 个或更多服务器吗?我需要做的是部署到多个服务器(因为我的测试环境中有两个使用 NLB)。

我现在拥有的是一个构建定义,它构建、运行我的测试,然后部署到我的一个测试服务器(上面运行了 MsDeployAgentService)。它工作正常,并且每个 Web 项目都按照其项目文件中的配置进行部署。我使用的 MSBuild 参数是:

注意:我不使用 /p:DeployIISAppPath="xyz" 因为它不会部署我的所有项目并覆盖我的项目配置。

我可以添加另一个构建参数来让它调用多个 MSDeployServiceURL 吗?像第二个 /p:MSDeployServiceURL 参数那样指定另一个服务器?

还是我必须寻找其他解决方案,例如编辑 WF?

我在 2 个月前在这里看到了一个几乎完全相同的问题:TFS 2010 - Deploy to Multiple Servers After Build,所以看起来我不是唯一一个试图解决这个问题的人。

我还在讨论 MSDeploy 的 IIS.NET 论坛上发帖:http ://forums.iis.net/t/1170741.aspx 。它有很多观点,但同样,没有答案。

0 投票
2 回答
230 浏览

visual-studio-2008 - 您可以使用哪些技术为 vs2008 解决方案构建 Web 部署包?

我的网站建立在 ASP.NET、.NET 3.5 框架上。由于各种原因,我无法将我的项目转移到 vs2010。结果,我无法使用 vs2010 支持的“构建部署包”目标。

有谁知道使用 vs2008 安装构建 web 部署包(可以通过 web 部署导入 IIS 7 的 zip 存档)的方法(这里更喜欢使用 msbuild,我不需要 vs2008 集成)。

FWIW,我试图避免将其发布到临时服务器以导出网站。但是,如果这是唯一的选择,那就这样吧。

0 投票
2 回答
15884 浏览

asp.net - 使 Web.config 转换在本地工作

我想让 web.config 转换在本地工作,但显然只有在部署时才会发生转换。

有没有人知道在不经过“重建”过程的情况下运行 msbuild 目标“TransformWebConfig”的方法,并且还指定和输出目录来吐出转换后的 web.config?

编辑:使用赛义德的回答,我创建了一个.bat文件来为我运行任务:

“Transformation.proj”是下面答案中 Sayed 代码片段的副本。只需指定转换的源、目标和目的地。新文件,在这种情况下,转换后的“web.config”将位于“D:\Demo”目录中。我只是将它复制过来以覆盖我项目的 web.config,最后删除“demo”文件夹中生成的文件。

另外,我创建了一个宏来运行这个批处理文件并为我执行转换:

您还可以在工具栏上添加一个按钮来运行此批处理和/或分配一个快捷键来执行。

0 投票
2 回答
5360 浏览

msbuild - MS Deploy 可以打包和转换,但不能部署吗?

在 .NET 4.0 中使用 msbuild,我可以使用“Package”目标构建 Web 项目,并且可以很好地将包放入 zip 文件中。但是,当我查看其中的 web.config 时,它并没有被转换,它有“$(ReplacableToken_Web_SiteConnection-Web.config Connection String_0)”

我可以运行“TransformWebConfig”目标,它会进行正确的转换,但只是在它自己的筒仓中。

我还可以运行“Build”目标并传递“DeployOnBuild=True;DeployTarget=MSDeployPublish”属性,它会在我的服务器上部署包,并完成正确的 web.config 转换。

但是,如果我想手动将包部署到服务器,如何使用“TransformWebConfig”执行“包”,以便 zip 文件中包含最终的 web.config?

0 投票
1 回答
2972 浏览

asp.net - Web 部署和文件夹权限

我正在使用 VS 2010 为 Web 应用程序构建部署包。我使用它生成的部署 ccommand 脚本手动将它部署到 IIS 6.0 服务器。所有的东西都被正确地复制到 Inetpub 默认网站下。我唯一的问题是,一旦我部署,文件夹权限就会不断重置。

假设我的网站位于“Mywebsite”文件夹下。我授予某些用户 XYS 对此文件夹的完全控制权。一切都很好。下次部署时,用户 XYZ 不再具有完全控制权,并且权限被重置。

0 投票
1 回答
9325 浏览

powershell - 如何使用 Add-Type 加载 Microsoft.Web.Deployment?

我正在编写一些使用MSDeploy API 的 PowerShell 脚本。我可以使用加载程序集

该位置在GAC中:

但是,我无法使用Add-Type加载程序集。我收到一条错误消息,提示找不到程序集并且缺少一个或多个程序集。

如何使用 Add-Type 加载 Microsoft.Web.Deployment?