我在我的nant脚本(Team City)中有一个msdeploy正在工作,除了它正在复制一些我不想复制的文件夹.什么命令会跳过这些目录?我试过了:
<arg value="-skip:objectName=dirPath,absolutePath=C:\Websites\slingshotportal\Build scripts"' />
and
<arg value='-skip:objectName=contentPath,absolutePath="C:\\Websites\\slingshotportal\\Build scripts"' />
Run Code Online (Sandbox Code Playgroud)
这些命令似乎都不起作用,Build脚本目录仍然从源目录复制到目标目录?msbuild执行同步,我将-source和-dest指定为contentPath.
我正在尝试自动化我们的构建/部署过程.
到目前为止,我正在使用:
因此,经过多次争吵和咬牙切齿之后,我现在让CCNet开始使用MSBuild脚本来构建,打包和部署网站.该MSBuild的脚本如下:
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="Build">
<MSBuild Projects="$(CCNetWorkingDirectory)\src\Product.sln"
Targets="Clean;Rebuild"
Properties="Configuration=$(Configuration)"
/>
</Target>
<!--<Target Name="Test" DependsOnTargets="Build">
<MSBuild Projects="$(CCNetWorkingDirectory)\src\Product.Web.Tests\Product.Web.Tests.csproj"
Properties="Configuration=$(Configuration);OutputPath=$(CCNetArtifactDirectory)\Tests\" />
<Exec Command="$(MSTestPath) /testcontainer:$(CCNetArtifactDirectory)\Tests\Product.Web.Tests.dll /runconfig:$(CCNetWorkingDirectory)\src\Local.testsettings" ContinueOnError="false" />
</Target>-->
<Target Name="Package" DependsOnTargets="Build">
<MSBuild Projects="$(CCNetWorkingDirectory)\src\Product.Web\Product.Web.csproj"
Targets="Package"
Properties="Configuration=$(Configuration);PackageLocation=$(PackageDir)\Product.zip"
/>
</Target>
<Target Name="Deploy" DependsOnTargets="Package">
<Exec Command=""$(MSDeployPath)" -source:package='$(PackageDir)\Product.zip' -dest:auto,computerName='$(MSDeployComputerName)',includeAcls='False' -verb:sync -setParamFile:$(PackageDir)\Product.SetParameters.xml" ContinueOnError="false" />
</Target>
Run Code Online (Sandbox Code Playgroud)
只要在目标机器上已经有一个在IIS中配置的网站,这一切都可以正常工作.这不需要是现有的"真实"站点(它可能只是一个shell).
虽然这很棒,但我真的希望MSDeploy能够自动创建网站,因为它似乎可以用于网络应用程序.这可能吗?如果有的话,任何帮助将不胜感激!
我有:
问题:它执行两次整个清单.
尝试:我已经修改了waitInterval和waitAttempts认为它已经超时并重新开始,但是没有帮助.
问题:可能使它执行两次?
清单:
<sitemanifest>
<runCommand path="net stop TestSvc"
waitInterval="240000"
waitAttempts="1"/>
<runCommand
path="C:\Windows\Microsoft.NET\Framework\v4.0.30319\installutil.exe /u
C:\msdeploy\TestSvc\TestSvc\bin\Debug\TestSvc.exe"
waitInterval="240000"
waitAttempts="1"/>
<dirPath path="C:\msdeploy\TestSvc\TestSvc\bin\Debug" />
<runCommand
path="C:\Windows\Microsoft.NET\Framework\v4.0.30319\installutil.exe
C:\msdeploy\TestSvc\TestSvc\bin\Debug\TestSvc.exe"
waitInterval="240000"
waitAttempts="1"/>
<runCommand path="net start TestSvc"
waitInterval="240000"
waitAttempts="1"/>
</sitemanifest>
Run Code Online (Sandbox Code Playgroud)
发出包装命令:
"C:\Program Files\IIS\Microsoft Web Deploy V2\msdeploy"
-verb:sync
-source:manifest=c:\msdeploy\custom.xml
-dest:package=c:\msdeploy\package.zip
Run Code Online (Sandbox Code Playgroud)
发出执行它的命令:
"C:\Program Files\IIS\Microsoft Web Deploy V2\msdeploy"
-verb:sync
-source:package=c:\msdeploy\package.zip
-dest:auto,computername=<computerNameHere>
Run Code Online (Sandbox Code Playgroud)
我作为具有管理访问权限的域用户运行.我也尝试过传递凭据 - 这不是权限问题,命令是成功的,只执行两次.
编辑:
我启用-verbose并在日志中找到了一些有趣的行:
详细:执行同步传递#1.
...
详细:源文件路径(C:\ msdeploy\MyTestWindowsService\MyTestWindowsService\bin\Debug\MyTestWindowsService.exe)与属性不同的目标(C:\ msdeploy\MyTestWindowsService\MyTestWindowsService\bin\Debug\MyTestWindowsService.exe)不匹配(lastWriteTime [ '11/08/2011 23:40:30','11/08/2011 23:39:52']).更新待定.
详细:源文件路径(C:\ msdeploy\MyTestWindowsService\MyTestWindowsService\bin\Debug\MyTestWindowsService.pdb)与属性不同的目标(C:\ msdeploy\MyTestWindowsService\MyTestWindowsService\bin\Debug\MyTestWindowsService.pdb)不匹配(lastWriteTime [ '11/08/2011 23:40:30','11/08/2011 23:39:52']).更新待定.
在这些行之后,第一次不复制文件,而是第二次复制文件 …
我正在尝试在干净的构建Windows Server 2008 R2计算机上执行Web部署脚本并收到以下错误:
Run Code Online (Sandbox Code Playgroud)ERROR: The system was unable to find the specified registry key or值.在此计算机上找不到msdeploy.exe.请在执行脚本之前安装Web Deploy.
该软件包是在VS2010中创建的,并且在我的开发盒上执行正常(一如既往!).如果我通过IIS在服务器上导入包,一切正常.
Web Deploy已通过Web部署工具2.1通过Web PI安装在服务器上,并且我已验证包含msdeploy.exe.我正在通过"IIS Extensions/Web Deploy命令行"开始菜单项运行脚本,所以我猜测应该设置正确的路径.我也以管理员的身份尝试了同样的错误.
任何帮助非常感谢.
我正在尝试使用MSDeploy使用TeamCity将MVC项目部署到服务器.当我在powershell中的计算机上执行此操作时,使用以下命令:
msbuild.exe .\mvc.csproj /p:PublishProfile=DevServer /p:VisualStudioVersion=11.0
/p:DeployOnBuild=True /p:Password=MyPassword /p:AllowUntrustedCertificate=true
Run Code Online (Sandbox Code Playgroud)
它构建项目并将其部署到服务器(DevServer发布配置文件中定义的信息).输出MSDeployPublish结尾显示了一个部分,其中我看到了文本Starting Web deployment task from source...,然后是行,告诉我哪些文件已更新,等等.
当我在TeamCity上使用MSBuild Build步骤在同一个文件上使用相同的参数(来自同一个工作目录)运行它时,它会构建项目但不会发布它.相反,它具有构建过程(CoreCompile,_CopyFilesMarkedCopyLocal,GetCopyToOutputDirectoryItems,CopyFilesToOutputDirectory)的常规输出,但实际上并没有发布任何内容.
我需要对TeamCity中的设置进行哪些更改才能使其以与从我的计算机上使用MSBuild一样的方式发布部署?
(TeamCity 7.1,MSBuild 4.0,WebDeploy 3.0,Visual Studio 12,IIS 7.与我之前的问题相关)
我有一个ASP.NET MVC Web应用程序项目,我想部署到我的IIS Web服务器.站点树是这样设置的:
SERVERNAME(myDomain\Username)
Application Pools
Sites
Default Web Site
MyProjectSite
bin
Content
...
Views
Run Code Online (Sandbox Code Playgroud)
我正在尝试部署到MyProject站点.请参阅下面我正在使用的设置与我要返回的错误.我显然没有正确指定我的网站路径,但对于我的生活,我无法弄清楚它应该是什么.
迭代之间的以下设置保持不变:
/p:DeployOnBuild=True /p:DeployTarget=MsDeployPublish /p:CreatePackageOnPublish=False /p:MSDeployPublishMethod=WMSvc /p:AuthType=Basic /p:Username="myUserName" /p:Password="MyPassword" /p:AllowUntrustedCertificate=True
/p:MsDeployServiceUrl="https://serverName:8172/MsDeploy.axd?Site=MyProjectSite" /p:DeployIisAppPath="MyProjectSite/"
Could not complete an operation with the specified provider ("createApp") when connecting using the Web Management Service - 我不想创建新网站.我想同步已经存在的内容.
/p:MsDeployServiceUrl="https://serverName:8172/MsDeploy.axd?Site=MyProjectSite" /p:DeployIisAppPath="/"
Could not complete an operation with the specified provider ("iisApp") when connecting using the Web Management Service - 看起来它正试图访问默认网站或其他东西(我故意不给自己的权利).
/p:MsDeployServiceUrl="https://serverName:8172/MsDeploy.axd?Site=MyProjectSite" /p:DeployIisAppPath=""
我正在尝试确保将我的应用程序部署到使用Web Deploy时已存在的特定应用程序池.在通过IIS管理器安装应用程序时,或者通过从Web包通过命令行安装时更改.setparameters.xml文件中的值,应由用户使用GUI配置应用程序池.将以下参数条目插入我的parameters.xml中并不起作用.
<parameter name="Application Pool" description="Application Pool for this site" tags="iisApp" defaultValue="ASP.NET v4.0">
<parameterEntry kind="providerPath" scope="IisApp" match="applicationPool" />
</parameter>
Run Code Online (Sandbox Code Playgroud)
有没有直接的方法来实现这一目标?如果没有,我将如何完成这项工作?
MSBuild似乎真的很喜欢我.最近,我正在尝试从命令行构建和部署的不同可能性.但是,当我将发布配置文件传递给MSBuild时,我遇到了一些看似奇怪的行为.
这是我刚刚做的一个例子:
我暂时使用以下命令部署到本地IIS:
msbuild D:\PathToFile\DeployDBVariation01\DeployDBVariation01\DeployDBVariation01.csproj
/p:Configuration=Release;
Platform=AnyCpu;
DeployOnBuild=true;
DeployTarget=MSDeployPublish;
MSDeployServiceURL="localhost";
DeployIisAppPath="DeployApp/DeployThis";
MSDeployPublishMethod=InProc;
Username=thisIsNotActuallyMyUsername;
password=guesswhat;
AllowUntrustedCertificate=true
Run Code Online (Sandbox Code Playgroud)
这有效!之后它已成功部署,我可以在浏览器中调用它.
但是,由于Visual Studio使我们能够轻松使用发布配置文件,因此我想通过命令行与MSBuild一起尝试,并尝试使用以下命令:
msbuild D:\PathToFile\DeployDBVariation01\DeployDBVariation01\DeployDBVariation01.csproj
/p:DeployOnBuild=true;
AllowUntrustedCertificate=true;
PublishProfile=ReleaseLocal
Run Code Online (Sandbox Code Playgroud)
ReleaseLocal是我在Visual Studio中创建的配置文件,它看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<WebPublishMethod>MSDeploy</WebPublishMethod>
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<SiteUrlToLaunchAfterPublish />
<ExcludeApp_Data>False</ExcludeApp_Data>
<MSDeployServiceURL>localhost</MSDeployServiceURL>
<DeployIisAppPath>DeployApp/DeployThis</DeployIisAppPath>
<RemoteSitePhysicalPath />
<SkipExtraFilesOnServer>True</SkipExtraFilesOnServer>
<MSDeployPublishMethod>InProc</MSDeployPublishMethod>
<EnableMSDeployBackup>False</EnableMSDeployBackup>
<UserName />
<_SavePWD>False</_SavePWD>
<PublishDatabaseSettings>
<Objects xmlns="">
<ObjectGroup Name="DefaultConnection" Order="1" Enabled="False">
<Destination Path="Data Source=.\SQLEXPRESS;Initial Catalog=HorstDataProductive;User ID=sa;Password=GuessWhat" />
<Object Type="DbDacFx">
<PreSource Path="Data Source=.\SQLEXPRESS;Initial Catalog=HorstData;User ID=sa;Password=GuessWhat" includeData="False" />
<Source Path="$(IntermediateOutputPath)AutoScripts\DefaultConnection_IncrementalSchemaOnly.dacpac" dacpacAction="Deploy" />
</Object>
<UpdateFrom Type="Web.Config">
<Source MatchValue="Data …Run Code Online (Sandbox Code Playgroud) 我一直在浏览几十个网站,以帮助我使用MsDeploy将Web服务部署到IIS.我需要创建应用程序,修改应用程序池并启用协议,并更新appSetting(包含连接字符串,不要问我原因).
我可以做所有这些,除了应用好的应用程序池.
这是我添加到项目中的parameters.xml文件:
<parameters>
<parameter tags="IisApp" defaultValue="Default Web Site/MyWebService" name="IIS Web Application Name">
<parameterEntry match="@defaultValue" scope="IisApp" kind="ProviderPath"/>
<parameterEntry match="@defaultValue" scope="setAcl" kind="ProviderPath"/>
</parameter>
<parameter name="Configuration Connection String" defaultValue="Some real Connection String in there" tags="">
<parameterEntry kind="XmlFile" scope="\\web.config$" match="/configuration/appSettings/add[@key='ConfigurationSQLConnectionString']/@value" />
</parameter>
<parameter name="Application Pool" defaultValue="MyOwnAppPool" description="Application pool for this site">
<parameterEntry kind="DeploymentObjectAttribute" scope="application" match="/application/@applicationPool" />
</parameter>
</parameters>
Run Code Online (Sandbox Code Playgroud)
这是我生成包的方式:
MsBuild MyWebService.csproj /T:Package /P:PackageLocation="c:\somewhere\package.zip" /P:IncludeAppPool=true /P:IncludeIisSettings=true
Run Code Online (Sandbox Code Playgroud)
这是生成的archive.xml文件:
<sitemanifest MSDeploy.ObjectResolver.dirPath="Microsoft.Web.Deployment.DirPathObjectResolver" MSDeploy.ObjectResolver.filePath="Microsoft.Web.Deployment.FilePathObjectResolver">
<appHostConfig path="Default Web Site/MyWebService" MSDeploy.path="2" MSDeploy.MSDeployLinkName="Child1" MSDeploy.MSDeployKeyAttributeName="path" MSDeploy.MSDeployProviderOptions="some stuff">
<application path="/MyWebService" MSDeploy.path="2" applicationPool="DefaultAppPool" MSDeploy.applicationPool="1" …Run Code Online (Sandbox Code Playgroud) 在设置Jenkins部署作业时,尝试通过命令行部署Visual Studio 2012 Web项目时,我一直遇到此错误.
错误MSB4044:"ConcatFullServiceUrlWithSiteName"任务未获得所需参数"SiteAppName"的值
作为参考,以下是我使用的参数:
/p:Configuration=Release /t:Rebuild /p:VisualStudioVersion=11.0 /p:PublishProfile="DeployToDevServer"
/p:DeployOnBuild=True /p:DeployTarget=MSDeployPublish
/P:AllowUntrustedCertificate=True /p:MSDeployPublishMethod=WMSvc
/p:MsDeployServiceUrl=https://devmachine.server.com:8172/MsDeploy.axd
/p:username=domainhere\adminuserhere /p:password=adminpasshere
Run Code Online (Sandbox Code Playgroud)
注意:如果我从项目内部选择Publish ...,它会部署得很好.