我正在使用web.config转换文件的概念.我有三个网络配置.一个是分期,生产,部署.我对这三个有不同的连接信息.
Web.Config中:
<connectionStrings>
<add name="MyGallery"
connectionString="Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=DevelopmentStorageDb;Data Source=BALA\SQLEXPRESS" />
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)
Web.Config.Production:
<add
name="MyGallery"
connectionString="Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=SharePoint_Config;Data Source=BALA\SQLEXPRESS"
xdt:Transform="Replace" xdt:Locator="Match(name)"
/>
Run Code Online (Sandbox Code Playgroud)
现在我构建它正常工作的代码.我创建了包.当我在生产模式下运行代码时,新的连接字符串没有占用.
我该怎么解决这个问题.我是否需要额外的努力才能将其移至某个地方
visual-studio-2010 msdeploy visual-studio web-config-transform
我想删除一些图像资源,具体取决于我使用MsDeploy发布的构建.我有三个针对不同客户端的构建,这些构建基本上是另一个主题,并且有许多配置转换以正确设置其环境.
我不想在部署到client2时包含client1的映像资源.
一直使用它作为参考,使我的第一个绊脚石步骤定制msdeploy,它工作得很好,但我不知道什么变量来获取配置名称.
In pseudo code:
if $configurationName == "client1"
exclude dirs gfx/client2 and gfx/client3
if $configurationName == "client2"
exclude dirs gfx/client1, gfx/client3
and so on...
Run Code Online (Sandbox Code Playgroud)
可能它甚至可以排除所有,然后只包括所需的那个?
我打算将 ASP.NET 4.0 的 Web 部署功能用于我的站点。有谁知道此功能是否进行增量部署(即仅在解决方案中部署更改的或新的文件)?
谢谢
我希望MSDeploy 在使用同步时跳过其他文件夹中的特定文件夹和文件类型.目前我正在使用CCNet通过同步动词调用MSDeploy来将网站从构建转移到登台服务器.由于目标上的文件是由应用程序/用户上载的文件等创建的,因此我需要排除在目标上删除特定文件夹.此外,还有站点创建的清单文件需要保留在目标上.
目前我已经使用-enableRule:DoNotDeleteRule但是在目的地上留下过时的文件.
<exec>
<executable>$(MsDeploy)</executable>
<baseDirectory>$(ProjectsDirectory)$(projectName)$(ProjectsWorkingDirectory)\Website\</baseDirectory>
<buildArgs>-verb:sync
-source:iisApp="$(ProjectsDirectory)$(projectName)$(ProjectsWorkingDirectory)\Website\"
-dest:iisApp="$(website)/$(websiteFolder)"
-enableRule:DoNotDeleteRule</buildArgs>
<buildTimeoutSeconds>600</buildTimeoutSeconds>
<successExitCodes>0,1,2</successExitCodes>
</exec>
Run Code Online (Sandbox Code Playgroud)
我试图使用跳过操作但遇到问题.最初我删除了DoNotDeleteRule并将其替换为(multiple)skip
<exec>
<executable>$(MsDeploy)</executable
<baseDirectory>$(ProjectsDirectory)$(projectName)$(ProjectsWorkingDirectory)\Website\</baseDirectory>
<buildArgs>-verb:sync
-source:iisApp="$(ProjectsDirectory)$(projectName)$(ProjectsWorkingDirectory)\Website\"
-dest:iisApp="$(website)/$(websiteFolder)"
-skip:objectName=dirPath,absolutePath="assets"
-skip:objectName=dirPath,absolutePath="survey"
-skip:objectName=dirPath,absolutePath="completion/custom/complete*.aspx"
-skip:objectName=dirPath,absolutePath="completion/custom/surveylist*.manifest"
-skip:objectName=dirPath,absolutePath="content/scorecardsupport"
-skip:objectName=dirPath,absolutePath="Desktop/docs"
-skip:objectName=dirPath,absolutePath="_TempImageFiles"</buildArgs>
<buildTimeoutSeconds>600</buildTimeoutSeconds>
<successExitCodes>0,1,2</successExitCodes>
</exec>
Run Code Online (Sandbox Code Playgroud)
但这导致以下结果:
错误:源(iisApp)和目标(contentPath)与给定操作不兼容.
错误计数:1.
所以我从iisApp更改为contentPath而不是dirPath,absolutePath就像这样的目录:
<exec>
<executable>$(MsDeploy)</executable
<baseDirectory>$(ProjectsDirectory)$(projectName)$(ProjectsWorkingDirectory)\Website\</baseDirectory>
<buildArgs>-verb:sync
-source:contentPath="$(ProjectsDirectory)$(projectName)$(ProjectsWorkingDirectory)\Website\"
-dest:contentPath="$(website)/$(websiteFolder)"
-skip:Directory="assets"
-skip:Directory="survey"
-skip:Directory="content/scorecardsupport"
-skip:Directory="Desktop/docs"
-skip:Directory="_TempImageFiles"</buildArgs>
<buildTimeoutSeconds>600</buildTimeoutSeconds>
<successExitCodes>0,1,2</successExitCodes>
</exec>
Run Code Online (Sandbox Code Playgroud)
这给了我一个错误:路径中的非法字符:
<buildresults>
信息:添加MSDeploy.contentPath(MSDeploy.contentPath).
信息:添加contentPath(C:\ WWWRoot\MySite
-skip:Directory = assets
-skip:Directory = survey
-skip:Directory = content/scorecardsupport
-skip:Directory = Desktop/docs
-skip:Directory = _TempImageFiles).
信息:添加dirPath(C:\ WWWRoot\MySite
-skip:Directory = assets
-skip:Directory …
cruisecontrol.net continuous-integration ccnet-config msdeploy
我试图通过c#使用MSDeploy API运行远程MSDeploy命令.
我正在运行以下内容:
//test connection by pulling down file list
var sourceBaseOptions = new DeploymentBaseOptions();
var destBaseOptions = new DeploymentBaseOptions
{
ComputerName = "https://mysite.com/msdeploy.axd?sitename=siteName",
UserName = "username",
Password = "password",
AuthenticationType = "Basic"
};
var syncOptions = new DeploymentSyncOptions();
var deployment = DeploymentManager.AvailableProviderFactories;
DeploymentObject deploymentObject = DeploymentManager.CreateObject("dirPath", Settings.TemporaryStoragePath, sourceBaseOptions);
// collect and report all the changes that would happen
var changes = deploymentObject.SyncTo(destBaseOptions, syncOptions);
Run Code Online (Sandbox Code Playgroud)
当我运行不受信任的证书时,它会抛出异常.如何告诉MSDeploy不要担心证书?(即基于代码的"AllowUntrustedCertificate = true")
我有一个Web表单应用程序(Visual Studio 2010),现有的wpp.targets文件可以成功地执行LESS预处理,资源缩小/捆绑,web.config加密等操作.
通过简单地右键单击Web应用程序,然后选择"发布 - 文件系统"选项,我一直能够部署得很好.
我最近决定尝试在应用程序中的特定文件夹上自动设置ACL权限.这导致我从文件系统发布选项更改为Web部署选项(在服务器上安装和配置Web部署3后也可以正常工作).
我切换到Web Deploy的原因是因为我的理解是通过使用Web Deploy选项,我应该能够在我的wpp.targets文件中添加其他步骤来设置必要的文件夹权限.
我已经看过很多关于这个主题的文章,博客,论坛帖子等,看起来相当简单.
我正在尝试为域用户提供名为"IDAutomation"的文件夹的读/写/修改权限 - 所以我基本上只是在现有的wpp.targets文件末尾添加了以下内容:
<Target Name="SetupCustomAcls" AfterTargets="AddIisSettingAndFileContentsToSourceManifest">
<ItemGroup>
<MsDeploySourceManifest Include="setAcl">
<Path>$(_MSDeployDirPath_FullPath)\IDAutomation</Path>
<setAclAccess>Read,Write,Modify</setAclAccess>
<setAclUser>Domain Users</setAclUser>
<setAclResourceType>Directory</setAclResourceType>
<AdditionalProviderSettings>setAclResourceType;setAclAccess</AdditionalProviderSettings>
</MsDeploySourceManifest>
</ItemGroup>
</Target>
<Target Name="DeclareCustomParameters" AfterTargets="AddIisAndContentDeclareParametersItems">
<ItemGroup>
<MsDeployDeclareParameters Include="IDAutomationSetAclParam">
<Kind>ProviderPath</Kind>
<Scope>setAcl</Scope>
<Match>^$(_EscapeRegEx_MSDeployDirPath)\\IDAutomation$</Match>
<Value>$(_DestinationContentPath)/IDAutomation</Value>
<ExcludeFromSetParameter>True</ExcludeFromSetParameter>
</MsDeployDeclareParameters>
</ItemGroup>
</Target>
Run Code Online (Sandbox Code Playgroud)
但我显然遗漏了一些东西,因为我点击了Publish - > Web Deploy - 让它做了它的事情,权限不会应用到文件夹.该应用程序已成功部署,一切看起来都很好 - 它只是没有为我设置该文件夹的权限.
以下是部署输出结束时的一些摘录:
Target "Package" skipped, due to false condition; ($(_CreatePackage)) was evaluated as (false).
Target "MSDeployPublish" in file ..... from project .....
Start Web Deploy …Run Code Online (Sandbox Code Playgroud) 我在VS 2012项目中设置了发布配置文件.当我在VS中右键单击项目时,选择"发布"并单击[发布]按钮,它会使用"发布配置文件"中提供的设置将项目发布到服务器.
当我使用msbuild和命令行时,使用以下语法:
msbuild.exe .\mvc.csproj /p:PublishProfile=DevServer
/p:DeployOnBuild=True /p:Password=MyPassword /p:AllowUntrustedCertificate=true
Run Code Online (Sandbox Code Playgroud)
然后它构建项目,并给我一个消息:
软件包"mvc.zip"在以下位置成功创建为单个文件:file:/// c:/ code/mvcsite/obj/Debug/Package
然后提供有关如何部署程序包的信息.
如何从命令行部署?我的最终目标是通过TeamCity运行部署,现在正试图让我的命令行属性正确.但是,我现在可以从命令行做的最多的事情是创建部署包,但不能运行实际部署.我怎样才能做到这两点(最好用一个声明,复制VS2012从我那里部署时发生的事情)?
我已尝试在几个不同的服务器上安装Web Deploy,它的工作范围我需要它,但我还没有确定缺少的步骤是什么.
在安装了以下必需条件之后:http: //www.iis.net/learn/install/installing-publishing-technologies/installing-and-configuring-web-deploy
在网站的上下文菜单中偶尔会出现"配置Web部署发布"选项.有没有人有适当的部署指南?如何启用该选项?
在这些情况下的部署不是通过WebPI.我必须单独下载软件包并手动安装.使用当前链接,屏幕截图或建议找不到详细信息.
基本Windows Server 2008服务器没有安装任何特殊功能.如果有人有任何想法,很高兴澄清任何事情.
我遇到 msdeploy 未同步站点子应用程序(例如默认网站)的应用程序池信息的问题。
本质上,我希望能够创建 webdeploy/msdeploy 包作为多个开发分支的夜间构建过程的一部分,然后将这些特定于分支的包部署到服务器进行冒烟测试。一切似乎都有道理,但不幸的是我找不到一种方法来设置已部署包的 iisApp 打算使用的应用程序池。我可以创建和部署包含 appPoolConfig 提供程序的包来支持应用程序池本身的创建,但如果我无法在正在部署的应用程序上设置应用程序池,则这是无用的。
顺便说一句,我觉得我几乎在重复其他看似相似的问题。对于使用 appPoolconfig 或 appPoolExtension 给出了各种答案,但我对这些没有运气。根据我的阅读,appPoolConfig 用于同步应用程序池本身,而不是“分配”给应用程序的应用程序池。顺便说一句,这种类型的同步操作效果很好。至于 appPoolExtension 我不知道它在打开时实际上会做什么,因为我发现生成的包没有任何区别。
我可以使用一组简单的步骤重新创建问题,这些步骤仅使用 msdeploy,而不使用 WPP/webdeploy/msbuild,其目的是它应该单独使用最低级别的工具:
Windows 8(注意:我也可以在 Win 2008 R2 上复制该问题)、已安装 IIS 和 Web Deploy 3.0。
类型 >
msdeploy -verb:sync -source:iisApp="Default Web Site/TestApp" -dest:package=c:\temp\testapp.zip,encryptPassword="password" -enableLink:AppPoolExtension
Run Code Online (Sandbox Code Playgroud)假设我们仍然在 IIS 中将 TestPool 应用程序池配置为可用池,请输入 >
msdeploy -verb:sync -source:c:\temp\testapp.zip,encryptPassword="password" -dest:iisApp="Default Web Site/TestApp" -enableLink:AppPoolExtension
Run Code Online (Sandbox Code Playgroud)任何帮助表示赞赏。
编辑:只需对上述步骤进行变体,然后在两个 msdeploy 命令行中将“iisApp”更改为“appHostConfig”,并且保留应用程序池设置,因此从 msdeploy 的角度来看是成功的。但是,如果这是解决方案,如何通知 …
我想执行一个后期构建步骤,使用MSDeploy将一些文件复制到网站文件夹中.
最终我将这个做到远程位置(指定computerName,userName切换等),但是现在我在本地运行它:
"C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe"
-AllowUntrusted -verb:sync
-source:dirPath="D:\files_to_copy"
-dest:iisApp="My Website Name"
Run Code Online (Sandbox Code Playgroud)
这有效,但它会删除网站文件夹的所有内容,并将其替换为"D:\ files_to_copy"的内容(正如您所料!).所以我想知道如何使用这个简单的复制到网站内的子文件夹?
我试过-dest:iisApp="My Website Name/my_subfolder"但这只是创建一个名为"my_subfolder"的新IIS应用程序嵌套在现有的IIS应用程序中.
msdeploy ×10
msbuild ×4
iis ×3
webdeploy ×2
asp.net ×1
ccnet-config ×1
deployment ×1
iis-6 ×1
jenkins ×1