我有一个应用程序设置与以下打包/发布Web设置:
在项目中,我有一个App_Data文件夹设置,主要用于处理应用程序日志.
我希望看到(并期望)的行为如下:
但是,msdeploy似乎没有执行步骤#1(如果我手动创建文件夹,则步骤2没问题).除了这个没有答案的问题,我一直无法在网上找到任何文件,似乎证实了我看到的行为.
在这种情况下,如何让msdeploy创建App_Data并为初始部署分配权限?
尝试使MSDeploy正常工作,并且它"挂起"在MSDeployPublish任务上.它说
"启动Web部署将应用程序/包发布到
https://myserver:8172/msdeloy.axd?site=mysite
...从源:archiveDir(存档路径)到目标:auto()启动Web部署任务."
它就停止了.在我杀死这个过程之前,它会像这样坐30分钟,或者更多.
在它正在部署的服务器上,在这种情况下是myserver,MSDeploy的错误是:
ERROR_SERIALIZER_ALREADY_DISPOSED - 回调线程发生错误.这些错误通常是良性的并且是自动处理的.详细信息如下:System.Web.HttpException:远程主机关闭了连接.错误代码是0x800704CD.在System.Web.Hosting.IIS7WorkerRequest.RaiseCommunicationError(Int32 result,Boolean throwOnDisconnect)中的System.Web.Hosting.IIS7WorkerRequest.ExplicitFlush()处于System.Web.HttpResponse.Flush(Boolean finalFlush),位于System.IO.BufferedStream.FlushWrite( )在System.IO.BufferedStream.Flush()at System.Xml.XmlTextWriter.Flush()at Microsoft.Web.Deployment.TraceEventStreamSerializer.WriteKeepAliveEvent()
没有其他错误日志或消息,我可以找到.我可以将网址命名为msdeploy,例如,如果我https://myserver:8172/msdeloy.axd
在浏览器中访问,我会收到自签名证书警告,然后会收到提示输入凭据,因此服务器上的MSDeploy似乎已启动并正在运行.
服务器(myserver)是带有IIS7的Windows 2008R2.
真正糟糕的是,如果我重新启动我正在部署的服务器(myserver)IT WORKS!
关于这里发生了什么的任何想法?
我在参数中遇到空格问题,我尝试从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 =`'default web site`'-verbose
== SUCCESS
这个?
$ sitename ="默认网站"
&$ msdeploy -verb:dump -source:appHostConfig = $ sitename -verbose
== FAIL,出现以下错误
msdeploy.exe:错误:无法识别的参数'" - source:"appHostConfig = default'.所有参数必须以" - "开头.
在C:\ xxx\test.ps1:122 char:6
+&
+ CategoryInfo:NotSpecified :(错误:Unrecogn ...以" - "开头:String)[],RemoteException
+ FullyQualifiedErrorId:NativeCommandError
错误计数:1.
以下变化也失败了
#FAIL
$ sitename =`'默认网站''
$ sitename =`'"默认网站"`'
$ sitename ="`''默认网站`'"
$ sitename ="默认网站"
$ …
我正在尝试使用新的发布配置文件支持(在VS2012和VS2010中通过更新提供)来创建连续交付"部署管道",从而在第一个"阶段"中创建包/ zip并且相同的包是使用不同的配置部署到各种环境.
使用pubxml文件中定义的设置从命令行部署现有软件包涉及哪些任务/属性,而不会导致构建?换句话说,我想"发布"到一个包,然后将相同的包"发布"到另一个配置文件而不重建它.
(我知道我可以直接使用MSDeploy,但如果可能的话,我更愿意在每个项目上使用更少的管道)
我想使用Web Deploy来运行自定义部署设置.
因为我想在许多不同的环境(团队成员本地机器,4个不同的构建服务器)上运行时能够正常工作,我想部署到相对的本地路径.
我想要做的是:
但是当我输入本地文件路径以部署为:"..\Deploy_Production"
Web部署抱怨:
2>Connecting to ..\Deploy_Live...
2>Unable to create the Web site '../Deploy_Live'. The URL http://:0 is invalid.
Run Code Online (Sandbox Code Playgroud)
它就好像Web部署认为相对文件路径是网站URL.使用".. \"代替我的原因.
如何将WebDeploy部署到本地相对路径?
编辑1:
我试图在构建之前使用ConvertToAbsolutePath任务,但无济于事:
<PropertyGroup>
<WebPublishMethod>FileSystem</WebPublishMethod>
<SiteUrlToLaunchAfterPublish>http://mywebsite.com</SiteUrlToLaunchAfterPublish>
<publishUrl>..\Deploy_Production</publishUrl>
<DeleteExistingFiles>False</DeleteExistingFiles>
</PropertyGroup>
<Target Name="BeforeBuild">
<ConvertToAbsolutePath Paths="$(publishUrl)">
<Output TaskParameter="AbsolutePaths" PropertyName="publishUrl" />
</ConvertToAbsolutePath>
</Target>
Run Code Online (Sandbox Code Playgroud)
编辑2: 上述工作,但只有在针对解决方案文件而不是项目文件运行命令行构建时
我们有一个使用NServiceBus发布活动的网站.使用msdeploy部署站点.我们还有NServiceBus.exe作为Windows服务运行来订阅这些事件,我们也想部署它.
有没有办法打包服务以及网站,以便它也可以安装?是否可以单独打包,以便我们可以将其部署到另一台服务器?
有关如何查找有关如何执行此操作的信息的任何提示都很棒,因为我们现在可以自动部署网站.
我正在解决这个MSBuild问题.
我们正在使用TeamCity构建一个包含两个MVC网站的解决方案.作为构建的一部分,我们将部署到构建服务器上的文件夹中.IIS指向此文件夹,以便为管理层提供可见的集成构建.
这是MSBuild文件中使用MSDeploy发布包的代码 - 但不是zip文件.
<Target Name="Deploy">
<MSBuild
Projects="$(SolutionFile)"
Properties="Platform=$(Platform);Configuration=$(Configuration);
DeployOnBuild=true;
DeployTarget=Package;
PackageLocation=$(PackageLocation);
PackageAsSingleFile=False;
AutoParameterizationWebConfigConnectionStrings=False" />
</Target>
Run Code Online (Sandbox Code Playgroud)
这里的问题是我们得到了一个非常深的文件夹结构.这是一个例子......
C:\ DEPLOY\Archive\Content\C_C\Users\Edmond\Documents\Visual Studio 2008\CreatioGreen\Creatio\Code\core\trunk\Website\Website\obj\Release\Package\PackageTmp [已发布文件]
我真的想部署到可预测的文件夹,如...
C:\ build\website [已发布文件] C:\ build\mobilewebsite [已发布文件]
这就是背景.以下是具体问题.
我们在尝试使用MSDeploy发布到本地文件系统时犯了错误吗?我们基本上需要相当于VS2010"发布"功能,配置转换.我们不是要尝试部署到远程IIS实例或任何东西.
有没有办法这样做,但指定发布文件夹?
我一直在尝试使用MSBuild Copy任务将文件复制到更合理的文件夹中 - 但我无法弄清楚如何使用通配符来指定我们需要采取的文件夹 - 它需要像...
C:\ FolderPackageEndsUpIn [ANYFOLDERS]\Website [ANYFOLDERS]\PackageTmp**.
救命!
在TeamCity中转换web.config文件时出现以下错误.它发生在元素上<applicationSettings xdt:Transform="Replace">
.
源文档中的任何元素都不匹配'/ configuration/applicationSettings'
源文件具有此设置.不知道怎么解决这个问题?
我正在尝试使用WebDeploy使用自定义MSDeploy跳过规则和Visual Studio 2012中保存的发布配置文件来发布网站.
我从命令行使用发布配置文件,但跳过删除文件夹的跳过规则不起作用.
我的ErrorLog
网络应用程序中有一个子文件夹,web.config
里面有一个文件来设置正确的文件夹权限.没有任何跳过规则,ErrorLog
文件夹和web.config
文件将正常发布,但服务器上文件夹中的所有现有错误日志文件将在发布时删除.
错误 <SkipAction>Delete</SkipAction>
当我向我的wpp.targets
文件添加自定义跳过规则时,跳过规则不再接受该<SkipAction>
元素的值.如果我设置<SkipAction>Delete</SkipAction>
,我收到以下错误:
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\Web\Microsoft.Web.Publishing.targets(4377,5): error : Web deployment task failed. (Unrecognized skip directive 'skipaction'. Must be one of the following: "objectName," "keyAttribute," "absolutePath," "xPath," "attributes.<name>.") [C:\inetpub\wwwroot\My.Website\My.Website\My.Website.csproj]
Run Code Online (Sandbox Code Playgroud)
如果我只是省略该<SkipAction>
元素,ErrorLog
则在正常发布时删除该文件夹.
如果我<SkipAction></SkipAction>
再次设置,ErrorLog
则在发布时删除该文件夹.
如果我设置<KeyAttribute>Delete</KeyAttribute>
,然后ErrorLog
和web.config
文件通常刊载.
我的理解是,为了使用自定义跳过规则,您需要从命令行调用MSBuild而不是从VS 2012中发布.但是,我仍然想使用我保存的发布配置文件,我知道现在可以使用VS 2012.
我的MSBuild命令行:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe My.Website.sln /p:Configuration=Release;DeployOnBuild=true;PublishProfile="Test Server - Web Deploy"
Run Code Online (Sandbox Code Playgroud)
My.Website.wpp.targets:
<?xml version="1.0" encoding="utf-8" ?> …
Run Code Online (Sandbox Code Playgroud) 我目前使用TeamCity中的MSBuild运行器在我的本地服务器上进行持续集成,这非常有效.但是,我无法以TeamCity期望的格式查找MSDeploy支持的命令行开关的完整列表.
在我的'参数'部分中,我使用以下开关:
/P:Configuration=OnCommit
/P:DeployOnBuild=True
/P:DeployTarget=MSDeployPublish
/P:MsDeployServiceUrl=https://CIServer:8172/MsDeploy.axd
/P:AllowUntrustedCertificate=True
/P:MSDeployPublishMethod=WMSvc
/P:CreatePackageOnPublish=True
/P:UserName=Kaine
/P:Password=**********
/P:DeployIISAppPath="OnCommit/MySite"
/P:SkipExtraFilesOnServer=True
/P:DeployAsIisApp=True
Run Code Online (Sandbox Code Playgroud)
所有这些似乎工作正常,MSDeploy按预期工作.
当我想添加其他参数时出现问题.
我查找了MSBuild参数和MSDeploy文档,我似乎只找到这样的命令行参数:
msbuild SlnFolders.sln /t:NotInSolutionfolder:Rebuild;NewFolder\InSolutionFolder:Clean
Run Code Online (Sandbox Code Playgroud)
http://msdn.microsoft.com/en-us/library/ms164311.aspx
似乎这些命令行参数的引用与/ P:格式不对应 - 例如,CreatePackageOnPublish和DeployIISAppPath不是可识别的命令行参数,但它们在TeamCity构建过程中工作正常.
我在哪里可以找到格式的MSDeploy参数的完整文档列表
/ P:PARAM =值
附加信息:
这里有一个参数列表:
然而,这不是一个完整的列表 - 例如,这个名单不包括DeployAsIisApp或SkipExtraFilesOnServer,它们是从团队我市建设工作,这两个参数.
此相关问题(可能重复):MSDeploy的有效参数通过MSBuild包含一些参数 - 但仍然不是一个明确的列表.
msdeploy ×10
msbuild ×6
webdeploy ×4
teamcity ×2
.net ×1
asp.net ×1
iis ×1
iis-7 ×1
msbuild-wpp ×1
powershell ×1
publishing ×1
web-config ×1