你知道,微软的下一个"大"和"企业"的东西.
它只是我,还是人类真的难道?主要亮点是(IMO):
-skip:objectName=filePath,absolutePath=App_Offline.*仅用于跳过App_Offline.html)当然,MSDeploy和MSDeployAgent非常强大,但对于相对简单的任务,他们真的需要那么复杂吗?
Visual Studio 2010中的集成Web部署非常好.它可以创建一个可以在目标IIS计算机上使用MSDeploy部署的程序包.问题是,这个软件包将被重新分发给一个客户端,当安装MSDeploy时,客户端将使用IIS中的"导入应用程序"自行安装它.
创建的默认包始终包含开发计算机的完整路径,源清单文件中的"D:\ Dev\XXX\obj\Debug\Package\PackageTmp".它不会阻止安装,因为它是以这种方式设计的,但它在导入对话框中看起来很丑,对客户端没有任何意义.更糟糕的是,他会想知道这些路径是什么,看起来很混乱.
通过自定义.csproj文件(通过添加包创建任务使用的MSBuild属性),我设法向包中添加其他参数.但是,我花了大部分时间在2600行的Web.Publishing.targets中试图了解哪些参数影响了"开发路径"行为,徒劳无功.我也尝试使用setAcl在部署后自定义给定文件夹的安全性,但我只是通过使用相对路径设法使用MSBuild ...但是如果我解决了第一个问题则无关紧要.
我可以在创建后修改生成的存档,但我更喜欢使用MSBuild自动化所有存档.有谁知道这是怎么做到的吗?
我刚刚开始掌握TeamCity和MSDeploy,并且已经部署到由SVN提交触发的开发环境中工作得很好.我的问题是在释放到测试环境方面; 我希望根据需要并根据特定的修订号来执行此操作.基于用户定义的修订配置TeamCity构建的最佳方法是什么?
我试图通过MSDeploy运行命令作为我的打包/部署过程的一部分.特别是,我试图通过对我的一个DLL 运行installutil来创建自定义事件日志,但是我在部署目录中指定DLL 的相对路径时遇到问题.首先,我将以下配置添加到我的csproj中,以便在我的Manifest文件中生成runCommand提供程序.请注意DLL的绝对路径.
<PropertyGroup>
<!-- Extends the AfterAddIisSettingAndFileContentsToSourceManifest action to create Custom Event Log -->
<IncludeEventLogCreation>TRUE</IncludeEventLogCreation>
<AfterAddIisSettingAndFileContentsToSourceManifest Condition="'$(AfterAddIisSettingAndFileContentsToSourceManifest)'==''">
$(AfterAddIisSettingAndFileContentsToSourceManifest);
CreateEventLog;
</AfterAddIisSettingAndFileContentsToSourceManifest>
</PropertyGroup>
<Target Name="CreateEventLog" Condition="'$(IncludeEventLogCreation)'=='TRUE'">
<Message Text="Creating Event Log" />
<ItemGroup>
<MsDeploySourceManifest Include="runCommand">
<path>installutil C:\inetpub\wwwroot\MyTestApp\bin\BusinessLayer.dll</path>
</MsDeploySourceManifest>
</ItemGroup>
</Target>
<ItemGroup>
Run Code Online (Sandbox Code Playgroud)
在调用msbuild之后,这在package.zip中正确生成了我的清单.当我运行MyTestApp.deploy.cmd/Y时,它正确调用了msdeploy并将我的文件部署到inetpub\wwwroot\MyTestApp并从下面的清单中运行我的命令:
<runCommand path="installutil C:\inetpub\wwwroot\MyTestApp\bin\BusinessLayer.dll ... etc
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是我不想将此DLL路径硬编码到c:\ inetpub\etc.如何使用默认网站下部署目录中的相对路径进行上述调用?理想情况下,我希望MSDeploy采用此路径并将其作为变量传递给runCommand语句,以便找到DLL.然后我可以编写类似的内容:<path>installutil $DeploymentDir\NewTestApp\bin\BusinessLayer.dll</path>无需担心硬编码绝对路径.
有没有办法这样做,而不是每次都使用我的DLL的绝对路径?
我有一个构建/测试服务器,它目前运行Jenkins用于我的持续集成,它也作为我的测试服务器,代码将被部署到一次构建(我希望纠正这个并在以后的预算允许时分开这些)
我有一个.NET Web解决方案(基本上没有复杂的Umbraco),我在SVN和Jenkins现在正在构建.我现在想要使用MSDeploy将它部署到同一台服务器上.构建完成后,将生成程序包,但部署失败并显示错误
ERROR_DESTINATION_NOT_REACHABLE:Web部署任务失败.(无法连接到远程计算机("xxxxx.xxxxxxx.xxx.xxxx").在远程计算机上,确保已安装Web Deploy并且已启动所需的进程("Web管理服务")
这是Jenkins使用的我的msbuild参数
/P:Configuration=Release
/P:DeployOnBuild=True
/P:MSDeployPublishMethod=WMSVC
/P:DeployTarget=MSDeployPublish
/P:PublishProfile=GetSomePixels
/P:MsDeployServiceUrl=https://build.########
/P:AllowUntrustedCertificate=True
/P:CreatePackageOnPublish=True
/P:UserName=#######
/P:Password=########
Run Code Online (Sandbox Code Playgroud)
我检查了服务器并且Web Management Service正在运行并且正在手动启动
我也进入了IIS 8管理器(服务器2012)并检查了"管理服务"下的"允许远程连接"框.重新启动IIS和WMSVC仍然无法正常工作.
如果我在浏览器中访问https://myserver.co.uk:8172/MsDeploy.axd它会解析(提供有关不受信任证书的警告),然后显示空白页面.
任何人都有任何关于我能做什么的想法?我认为它可能与防火墙有关,即使它已经为8172的Windows防火墙添加了一个例外,我已经关闭了整个防火墙,完全没问题,但仍然没有运气.
在服务器上运行此命令以检查其在正确端口上的侦听
C:\ Users\Administrator> netstat -a | findstr 8172 TCP 0.0.0.0:8172 GSP-BUILD:0 LISTENING TCP [::]:8172 GSP-BUILD:0 LISTENING
我正在使用msdeploy来部署asp.net-mvc Web应用程序
TeamCity的.
我使用paramaters.xml文件来操作我的应用程序的web.config,特别是应用程序设置部分.
我有一些设置,其中只有特定环境的值才有效,其余时间值应为空(即,属性应该只有生产值).但是,当我没有指定值时,MSDeploy会给我这个例外:
Microsoft.Web.Deployment.DeploymentException:
The 'facebookUserToken' argument cannot be null or empty.
at Microsoft.Web.Deployment.DeploymentSyncParameterValidation.Validate(String parameterName, String parameterValue)
at Microsoft.Web.Deployment.DeploymentSyncParameter.set_Value(String value)
at Microsoft.Web.Deployment.DeploymentSyncParameterCollection.LoadFromFile(XPathNavigator nav, String fileName, Boolean ignoreExtraSetParameters)
at Microsoft.Web.Deployment.DeploymentSyncParameterCollection.Load(Stream stream, String fileName, Boolean ignoreExtraSetParameters)
at Microsoft.Web.Deployment.DeploymentSyncParameterCollection.Load(String fileName, Boolean ignoreExtraSetParameters)
at MSDeploy.MSDeploy.HandleSetParameters(DeploymentObject sourceObject, Random random)
at MSDeploy.MSDeploy.ExecuteWorker()
at MSDeploy.MSDeploy.Execute()
at MSDeploy.MSDeploy.Main(String[] unusedArgs)
Run Code Online (Sandbox Code Playgroud)
如何配置MSDeploy以允许参数具有空值?
web.config中:
<applicationSettings>
<SO.Example>
<setting name="FacebookUserToken" serializeAs="String">
<value></value>
</setting>
</SO.Example>
</applicationSettings>
Run Code Online (Sandbox Code Playgroud)
parameters.config:
<parameter …Run Code Online (Sandbox Code Playgroud) 使用msdeploy和msdeploy.axd处理程序时,任何尝试部署到我的远程服务器都会遇到401未授权的错误和服务器日志
IISWMSVC_AUTHORIZATION_SERVER_NOT_ALLOWED
只允许Windows管理员使用服务器连接进行连接.其他用户应使用"连接到站点或应用程序"任务才能进行连接.
过程:WMSVC
为网站级别定位axd的正确方法是什么?
有没有办法在ASP.NET MVC项目的.csproj文件中设置MSDeploy参数?特别是"skip"参数,它应该跳过"Temp"文件夹.
-skip:objectName=dirPath,absolutePath="\\temp"
Run Code Online (Sandbox Code Playgroud)
..或者如何将此参数传递到MSBuild.exe参数列表?
<TLDR>
它是在所有可能的使用MS的网络部署到部署Web应用程序的远程主机从命令行与非管理员用户?
</ TLDR>
我已经遵循了Microsoft的安装和配置Web部署指南中的每一点.我的目标是能够与IIS用户/非管理员用户进行远程Web部署.
完成为非管理员部署安装和配置Web部署中所述的所有步骤后,我收到以下日志消息(表示一切正常):
Publish enabled for 'deploy_user'
Granted 'deploy_user' full control on 'C:\inetpub\wwwroot'
Successfully created settings file 'C:\Users\...\Desktop\deploy_user_Default Web Site.PublishSettings'
Run Code Online (Sandbox Code Playgroud)
接下来,当我从本地计算机尝试运行以下命令时:
.\my_deploy_package.cmd /M:https://machine_name:8172/msdeploy.axd -allowUntrusted /U:deploy_user /P:deploy_password /A:Basic /T
Run Code Online (Sandbox Code Playgroud)
我收到一条错误消息:错误:远程服务器返回错误:(401)未经授权.
如果我在目标计算机上进入事件查看器>自定义视图> Administratove事件,我看到此消息出现"匹配"错误:
IISWMSVC_AUTHORIZATION_SERVER_NOT_ALLOWED
只允许Windows管理员使用服务器连接进行连接.其他用户应使用"连接到站点或应用程序"任务才能进行连接.
进程:WMSvc User = deploy_user
此错误与此问题中描述的完全相同.而接受的答案表明,我已经做是正确的做法.
我已经尝试了几种建议,就像这样,但似乎没有任何帮助.管理服务设置为允许远程连接(Windows和IIS管理器),并且我已经为内置Windows用户(非管理员)和IIS管理员用户运行配置,但仍然是相同的错误.但是,只要我与管理员用户一起运行deploy命令,它就会成功.
我被允许通过IIS gui与我的非管理员deploy_user用户远程连接(在IIS中:连接到站点> [服务器URL]/[站点名称]> deploy_user/deploy_password),表示已配置必要的权限和规则.但是,当我尝试运行部署脚本命令行(使用相同的用户)时,它会失败.
如果它实际上是因为错误消息指示,任何非管理员用户只能通过IIS管理器使用" 连接到站点"或"应用程序",那么从命令行/构建服务器执行此类部署的建议方法是什么?我真的不想在构建服务器的配置中以明文形式输入管理员用户的用户名/密码...
我发现有一个选项是,如果你的构建服务器和你试图部署的机器有一个共同的Active Directory(或其他共享用户的方式),你可以跳过这个/A:Basic标志,完全省去用户名和密码.您必须确保运行部署的用户也具有部署目标的管理员权限.但是,在我们的一个案例中,构建服务器和部署目标没有共同的用户群,因此这不是一个选项,我们将以明文形式返回用户名/密码 …
我正在尝试配置Visual Studio Online以将我的ASPNET 5应用程序连续部署到Azure webapp,如本教程中所述,来自Team Foundation Build文档:https://msdn.microsoft.com/Library/vs/alm/Build/天蓝色/部署,aspnet5
我已经完成了所有步骤,一切都很顺利.默认情况下,此脚本部署我的应用程序版本,该应用程序以完整的.Net 4.5.1 DNX为目标,因此我决定尝试修改它以部署.Net Core.
构建脚本通过调用以下方式创建其部署包:msbuild.exe /t:Build,FileSystemPublish
在调高日志详细程度并阅读相关的msbuild文件后,我学到了以下内容:
"Build"目标最终使用dnx.exe来编译项目.因为project.json文件包含dnx451和coreclr TFM,所以这一步为两个框架产生了构建输出 - 到目前为止一直很好.
但是,FileSystemPublish目标似乎只输出一个针对.Net 4.5.1运行时的msdeploy包.从日志中我可以看到执行FileSystemPublish目标最终会发出"dnu publish"命令,在我的情况下,将"dnx-clr-win-x86.1.0.0-beta6"作为-runtime参数传递.当我按照面包屑找出它的位置时,我的值"dnx-clr-win-x86.1.0.0-beta6"最终出现在Microsoft.DNX.Tasks.dll中的"GetRuntimeToolingPath"任务中.此任务似乎在global.json中查找以确定要使用的正确运行时,但奇怪的是在创建返回字符串之前,在内部用"x86"和"clr"覆盖此值.
如果我正确地解释了事情,似乎FileSystemPublish目标(在Microsoft.DNX.Publishing.targets中)基本上(间接)硬连线,以便在生成其包输出时使用x86,完整的.Net框架DNX.在这一点上,我不知道如何让这个构建过程生成.Net Core包.
我的问题是为什么FileSystemPublish会与x86完整的.Net DNX耦合,并且考虑到这种情况(除非我弄错了)为ASPNet 5应用程序生成一个针对.Net核心的msdeploy包的推荐方法是什么?
编辑:
目前我有一个解决方法.我可以/p:RuntimeToolingDirectory="C:\Users\buildguest\.dnx\runtimes\dnx-coreclr-win-x64.1.0.0-beta6"作为参数传递给msbuild.这将覆盖GetRuntimeToolPath中的默认逻辑并强制它使用.Net Core.这有效,但感觉就像一个黑客,所以我将问题留给更好的答案.
msdeploy ×10
msbuild ×5
c# ×2
deployment ×2
teamcity ×2
webdeploy ×2
asp.net ×1
asp.net-core ×1
asp.net-mvc ×1
azure-devops ×1
iis-7 ×1
jenkins ×1
packaging ×1
web-config ×1