我试图在MSDeploy命令的preSync调用期间调用powershell,但powershell在调用之后不会退出该进程.该命令(来自命令行):"tools/MSDeploy/msdeploy.exe"-verb:sync -preSync:runCommand ="powershell.exe -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -Command C:/MyInstallPath/deploy.ps1 Set -WebAppOffline Uninstall-Service",waitInterval = 60000 -usechecksum -source:dirPath ="build/for-deployment"-dest:wmsvc = BLUEPRINT-X86,username = deployer,password = deployer,dirPath = C:/ MyInstallPath
我在这里使用了一个hack(http://therightstuff.de/2010/02/06/How-We-Practice-Continuous-Integration-And-Deployment-With-MSDeploy.aspx)来获取powershell进程并将其杀死但是没用.我也尝试过taskkill和sysinternals等效,但没有任何东西可以杀死进程,以免MSDeploy出错.该命令已执行,但随后就在那里.什么可能导致powershell像这样挂起的想法?我在网络上发现了一些其他类似的问题,但没有答案.
环境是Win 2K3,使用Powershell 2.0.
更新:这是我用来调用我的powershell命令的.vbs脚本.使用'cscript.exe path/to/script.vbs'调用:
Option Explicit
Dim oShell, appCmd,oShellExec
Set oShell = CreateObject("WScript.Shell")
appCmd = "powershell.exe -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -Command ""&{ . c:/development/materialstesting/deploy/web/deploy.ps1; Set-WebAppOffline }"" "
Set oShellExec = oShell.Exec(appCmd)
oShellExec.StdIn.Close()
Run Code Online (Sandbox Code Playgroud) 这与我昨天提出的问题有关,但可能最好单独询问.
我有一个运行.csproj文件版本的TFS 2010服务器,以及一个安装了msdeploy的IIS6框.我希望构建自动发布构建,但无论我发送到其参数中,它都不会尝试运行发布.我可以把DeployTarget = TotalCarp,它仍然运行没有错误,但不会尝试发布.
下面是相关构建的日志部分:
运行MSBuild for Project
初始属性值
AdditionalVCOverrides =
CommandLineArguments =/p:SkipInvalidConfigurations = true/p:DeployOnBuild = True/p:DeployTarget = TotalCarp/p:MsDeployPublishMethod = RemoteAgent/p:DeployIisAppPath ="WebRoot/ExternalContractSupportWeb"/ p:MsDeployServiceUrl = whatever/p: AllowUntrustedCertificated = True/p:UserName = Username/p:Password = Password
Configuration = Test
GenerateVSPropsFile = True
LogFile =
LogFileDropLocation =\g10svhudtfs\TFSBuilds\ExternalContractSupport\TestBuild\TestBuild_20101101.25\logs
MaxProcesses = 1
OutDir = C:\ Builds\1\CustomerTerms\TestBuild\Binaries
Platform =任何CPU
Project = C:\ Builds\1\CustomerTerms\TestBuild\Sources\ExternalContractSupportWeb\ExternalContractSupportWeb.csproj
ResponseFile =
RunCodeAnalysis = AsConfigured
Targets =
TargetsNotLogged = String [] Array
ToolPath =
ToolPlatform = Auto
Verbosity = Diagnostic
C:\ Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe/nologo/noconsolelogger"C:\ Builds\1\CustomerTerms\TestBuild\Sources\ExternalContractSupportWeb\ExternalContractSupportWeb.csproj"/ …
我最终使用TeamCity设置来构建源代码控制更改,并使用单独的MSBuild任务设置,使用"package"目标和生成的"deploy.cmd"脚本打包并部署到登台服务器上的IIS.在构建事件,文件包含/排除等方面,一切都很完美......
但是,我遇到了如何部署软件包的问题.每当我将程序包部署到服务器时,IIS设置都会被吹走.例如,我可以设置缓存过期标头或打开静态压缩,在部署我的包后,它们将恢复为服务器的默认值.
有谁知道我怎么能解决这个问题?是否有我可以通过的参数或我可以忽略的规则?
我有一个在iis中托管的wcf应用程序,我正在尝试使用webdeploy打包.使用visual studio工具一切都很好,但我还需要创建一个日志文件夹并设置权限.为此,我在我的web项目中创建了一个ProjectName.wpp.target文件.该文件看起来像这样
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="CreateLogsDirectory" AfterTargets="AddIisSettingAndFileContentsToSourceManifest">
<!-- This must be declared inside of a target because the property
$(_MSDeployDirPath_FullPath) will not be defined at that time. -->
<ItemGroup>
<MsDeploySourceManifest Include="dirPath">
<Path>$(_MSDeployDirPath_FullPath)\logs</Path>
<enableRule>DoNotDeleteRule</enableRule>
</MsDeploySourceManifest>
</ItemGroup>
</Target>
<Target Name="DeclareCustomParameters" AfterTargets="AddIisAndContentDeclareParametersItems">
<!-- This must be declared inside of a target because the property
$(_EscapeRegEx_MSDeployDirPath) will not be defined at that time. -->
<ItemGroup>
<MsDeployDeclareParameters Include="LogsDirectoryPath">
<Kind>ProviderPath</Kind>
<Scope>dirPath</Scope>
<Match>^$(_EscapeRegEx_MSDeployDirPath)\\logs$</Match>
<Value>$(_DestinationContentPath)/log</Value>
<ExcludeFromSetParameter>True</ExcludeFromSetParameter>
</MsDeployDeclareParameters>
</ItemGroup>
</Target>
</Project>
Run Code Online (Sandbox Code Playgroud)
我可以看到dirPath提供程序已添加到sourcemanifest文件中,但是当我部署该程序包时,它会尝试创建源文件路径.本质上,LogsDirectoryPAth项不替换路径.谁能指出我需要做什么?谢谢 !
我遇到了msdeploy使用的SetParameters.xml文件的问题.
在我的网站中,我创建了一个parameters.xml文件,其中包含以下内容:
<parameters>
<parameter name="enableRule" defaultValue="DoNotDeleteRule"></parameter>
</parameters>
Run Code Online (Sandbox Code Playgroud)
在构建部署包期间,此参数将添加到setParameters.xml文件中,该文件如下所示:
<parameters>
<setParameter name="IIS Web Application Name" value="mywebsite/myservice/>
<setParameter name="enableRule" value="DoNotDeleteRule" />
</parameters>
Run Code Online (Sandbox Code Playgroud)
但是,当我运行msdeploy(使用包的cmd)时,将忽略该参数.我尝试通过添加-setParamFile属性来调用cmd,但这没有任何区别......
有人可以帮我弄这个吗 ?
我目前正在使用Microsoft Web部署技术(msbuild和msdeploy命令)将网站部署到服务器.该网站需要部署数据库,两者都在同一台服务器上.我正在寻找部署数据库项目(使用命令行)的最佳解决方案,我想更好地了解有关数据库部署的所有技术.
解决方案的内容(Visual Studio 2013):
注意:我没有自愿使用VS中的持续集成/交付工具或发布方法.我这个项目的第一个目标是了解msbuild/msdeploy如何工作......
我看了一下vsdbcmd命令,它似乎做了我想要的所有步骤......除了我需要将Visual Studio DLLs /文件导入我的远程服务器,我想知道是否有更好的方法......我也看了在msdeploy提供程序dbSqlPackage/dbDacFx,但据我所知,它使用dacpac来应用架构更改.同样,SqlPackage.exe似乎也使用dacpac.
使用dacpac听起来不错,但我对以下问题感到困惑:
是否有其他方法可以从命令行以及您的经验和项目进行部署,部署此类项目的最佳方式是什么?
非常感谢,
我看到人们参考此链接,因为它可以解决我的问题。我阅读了完整的线程并尝试了那里给出的每一个想法。没有任何效果。我也使用 VS 2015 Community 而不是 VS 2013。
我正在尝试通过 VS 2015 社区发布 Web API。我以前做过,但这次似乎不起作用。
我从服务器上的 IIS 获得了发布设置,并且连接验证工作正常。
当我进行发布时,出现此错误:
项目中不存在目标“MSDeployPublish”
我尝试了几件事,但提到最多的是(重新)安装Microsoft.Web.WebJobs.PublishNuGet 包并检查 CSPROJ 文件中的这两行:
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
你已经猜到这在我的情况下不起作用(否则我不会在这里发帖)。
我注意到的第一件事是版本 10.0。我回溯了路径,但我的磁盘上没有 10.0 版本。只有 12、14 和 15。14 似乎有目标,所以我将版本更改为 14...同样的错误。
我尝试安装几个软件包,再次检查 CSPROJ 文件,但似乎没有任何反应。一遍又一遍地犯同样的错误(在这里有点沮丧......)
有没有人对此有其他解决方案?
* 更新 *
它似乎适用于其他项目。看起来这个特定项目有问题。
* 更新 2 *
我设置了一个到主机的 FTP 连接,因为我正在尝试其他的东西。我尝试使用 FTP 发布,但给出了几乎相同的错误:
项目中不存在目标“GatherAllFilesToPublish”。
我希望使用 AzureDevOps 作为我的 CI/CD 工具来启用我的项目 (asp.net api) CI/CD。
我希望通过 FTP 将我发布的文件上传到我的托管提供商。
目前,当通过 Azure DevOps 构建产品时,它会将应用程序创建为 Msdeploy 文件。我的托管提供商不支持通过 ftp
建造
正如您所看到的构建工件,其格式为 Web 部署
上传文件后,服务器不知道如何部署 msdeploy 项目文件。 如何使用 AzureDevOps 部署网站
我想将文件作为 ftp 支持的常规文件上传,或者我想以自动方式执行 msdeploy
我读到了Web Deploy Powershell Cmdlet,我想开始使用它们.当然,我开始的第一项任务是备份我的测试网络服务器的当前配置状态 - 这个cmdlet应该这样做:
Backup-WDServer -ConfigOnly
Run Code Online (Sandbox Code Playgroud)
但是,当我运行它时,我得到了这个投诉 - 我不确定如何解决它:
Backup-WDServer : The property 'password' located at '/webServer/appHostConfig[@path='']/location[@path='']/section[@name='system.applicationHost/applicationPools']/applicationPools/applicationPoolDefaults/processModel' is
marked as secure. You must specify an encryption password to archive this property.
At line:1 char:1
+ Backup-WDServer -ConfigOnly
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [Backup-WDServer], DeploymentEncryptionException
+ FullyQualifiedErrorId : Microsoft.Web.Deployment.PowerShell.BackupServer
Run Code Online (Sandbox Code Playgroud) 我正在使用 msdeploy 将代码部署到开发服务器。今天早上它停止工作了。我收到 ERROR_USER_NOT_ADMIN。一切都没有改变,至少据我所知没有改变。
abc\jqin,该用户是域帐户,是本地管理员。为什么我仍然收到 ERROR_USER_NOT_ADMIN
部署:“C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe” -verb:sync -source:package="C:\NetBuild\Packages\IRViewerSvc\IRViewerSvc.zip" -dest:iisApp=IRViewerSvc, computerName=tvw-irwebsvc,用户名=“abc\jqin”,密码=******** 信息:使用 ID '51e98b9d-456e-4c7e-8f1a-c696c240f431' 连接到远程服务器。EXEC:错误代码:ERROR_USER_NOT_ADMIN [C:\NetBuild\BuildScript\IRViewerSvc.build]
更多信息:使用 Web 部署代理服务连接到“tvw-irwebsvc”,但无法授权。确保您是“tvw-irwebsvc”的管理员。了解更多信息: http://go.microsoft.com/fwlink/? LinkId=221672#ERROR_USER_NOT_ADMIN 。错误:远程服务器返回错误:(401) 未经授权。[C:\NetBuild\BuildScript\IRViewerSvc.build] EXEC:错误计数:1。 [C:\NetBuild\BuildScript\IRViewerSvc.build] C:\NetBuild\BuildScript\IRViewerSvc.build(71,5):错误 MSB3073:命令 ""C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync -source:package="C:\NetBuild\Packages\IRViewerSvc\IRViewerSvc.zip" -dest:iisApp=IRViewerSvc ,computerName=tvw-irwebsvc,username="abc\jqin",password=********" 退出,代码为 -1。完成构建项目“C:\NetBuild\BuildScript\IRViewerSvc.build”(部署目标)——失败。
我正在使用MSBuild在CruiseControl Server上创建Web部署程序包以部署Web应用程序。部署后,软件包中未包含的所有内容都将在我们的服务器上删除。
我尝试将选项SkipExtraFilesOnServer选项设置为true。但是它被Web Deploy忽略
<Target Name="CreateDeploymentPackage">
<MSBuild Projects="$(Web)" Targets="Package"
properties="Platform=$(Platform);
Configuration=$(Configuration);
DeployOnBuild=False;
DeployTarget=Package;
SkipExtraFilesOnServer=True;
MSDeployUseChecksum=True;
PackageLocation=$(DeployDirectory)\_PublishedWebsites\DeployPackage\$(CurrentProject).zip;
PackageAsSingleFile=True;
_PackageTempDir=$(PackageOutputDir)\temp;">
</MSBuild>
</Target>
Run Code Online (Sandbox Code Playgroud)
为什么这不起作用?我发现的每个文档都说应该。
从 Visual Studio 2015 内部尝试 Web 部署时,我得到以下信息:
Severity Code Description Project File Line Suppression State
Error Web deployment task failed. (Could not complete the request to remote agent URL '<mydomain>'.)
Could not complete the request to remote agent URL '<mydomain>'.
The operation has timed out App C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.Web.Publishing.targets 4283
Run Code Online (Sandbox Code Playgroud)
这发生在我使用 Visual Studio UI 成功验证连接之后。
我也成功发布到本地文件系统。
它发生了一个相对较快的连接(每秒上传 1MB)。
它发生在多个连接(不同的 ISP)上。
这是在我去年使用相同方法成功部署多次之后发生的。
在创建新的最小网络应用程序并部署它时,我不会发生。
msdeploy ×12
msbuild ×5
iis ×3
asp.net ×2
deployment ×2
powershell ×2
azure-devops ×1
cmdlet ×1
ftp ×1
iis-8 ×1
package ×1
parameters ×1
publishing ×1
sqlpackage ×1
sqlproj ×1
tfs ×1
timeout ×1
vsdbcmd ×1
webdeploy ×1