标签: msdeploy

VS2010中的Web.Config转换

我正在使用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

4
推荐指数
1
解决办法
4670
查看次数

Web部署:根据项目配置名称排除目录

我想删除一些图像资源,具体取决于我使用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)

可能它甚至可以排除所有,然后只包括所需的那个?

msbuild web-deployment-project visual-studio-2010 msdeploy

4
推荐指数
2
解决办法
3508
查看次数

MSDeploy 可以只部署新的或更改的文件吗?

我打算将 ASP.NET 4.0 的 Web 部署功能用于我的站点。有谁知道此功能是否进行增量部署(即仅在解决方案中部署更改的或新的文件)?

谢谢

asp.net deployment msdeploy

4
推荐指数
1
解决办法
1836
查看次数

获取MSDeploy以跳过文件夹中的特定文件夹和文件类型作为CCNet任务

我希望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

4
推荐指数
1
解决办法
7834
查看次数

MSDeploy API - 允许不受信任的证书

我试图通过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")

msdeploy webdeploy microsoft-web-deploy

4
推荐指数
1
解决办法
1488
查看次数

发布时没有执行wpp.targets中的setAcl - Web部署(但是说它是)

我有一个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)

msbuild visual-studio-2010 msdeploy

4
推荐指数
1
解决办法
1413
查看次数

使用MSBuild将Web部署到服务器

我在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从我那里部署时发生的事情)?

iis msbuild web-deployment msdeploy visual-studio-2012

4
推荐指数
1
解决办法
3234
查看次数

Web Deploy安装和配置是否有当前的演练?

我已尝试在几个不同的服务器上安装Web Deploy,它的工作范围我需要它,但我还没有确定缺少的步骤是什么.

在安装了以下必需条件之后:http: //www.iis.net/learn/install/installing-publishing-technologies/installing-and-configuring-web-deploy

在网站的上下文菜单中偶尔会出现"配置Web部署发布"选项.有没有人有适当的部署指南?如何启用该选项?

在这些情况下的部署不是通过WebPI.我必须单独下载软件包并手动安装.使用当前链接,屏幕截图或建议找不到详细信息.

基本Windows Server 2008服务器没有安装任何特殊功能.如果有人有任何想法,很高兴澄清任何事情.

iis msdeploy windows-server-2008 webdeploy

4
推荐指数
1
解决办法
3661
查看次数

部署 msdeploy iisApp 包时未设置应用程序池

我遇到 msdeploy 未同步站点子应用程序(例如默认网站)的应用程序池信息的问题。

本质上,我希望能够创建 webdeploy/msdeploy 包作为多个开发分支的夜间构建过程的一部分,然后将这些特定于分支的包部署到服务器进行冒烟测试。一切似乎都有道理,但不幸的是我找不到一种方法来设置已部署包的 iisApp 打算使用的应用程序池。我可以创建和部署包含 appPoolConfig 提供程序的包来支持应用程序池本身的创建,但如果我无法在正在部署的应用程序上设置应用程序池,则这是无用的。

顺便说一句,我觉得我几乎在重复其他看似相似的问题。对于使用 appPoolconfig 或 appPoolExtension 给出了各种答案,但我对这些没有运气。根据我的阅读,appPoolConfig 用于同步应用程序池本身,而不是“分配”给应用程序的应用程序池。顺便说一句,这种类型的同步操作效果很好。至于 appPoolExtension 我不知道它在打开时实际上会做什么,因为我发现生成的包没有任何区别。

我可以使用一组简单的步骤重新创建问题,这些步骤仅使用 msdeploy,而不使用 WPP/webdeploy/msbuild,其目的是它应该单独使用最低级别的工具:

Windows 8(注意:我也可以在 Win 2008 R2 上复制该问题)、已安装 IIS 和 Web Deploy 3.0。

  1. 假设存在默认网站并且安装了 .NET 4.0,请创建一个名为 TestPool 的新应用程序池。
  2. 在默认网站下创建一个名为 TestApp 的新应用程序,并将其应用程序池分配给步骤 1 中创建的 TestPool。
  3. 打开具有 msdeploy 路径访问权限的命令提示符。
  4. 类型 >

    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)
  5. 现在我们有了一个包,我们可以从默认网站下删除 TestApp,并删除作为初始应用程序创建的一部分创建的任何剩余物理文件夹。
  6. 假设我们仍然在 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)
  7. 转到 IIS 管理器并在默认网站下选择我们的 TestApp。单击基本设置...,应用程序池不是所需的测试池,而是为默认网站设置的默认池。

任何帮助表示赞赏。

编辑:只需对上述步骤进行变体,然后在两个 msdeploy 命令行中将“iisApp”更改为“appHostConfig”,并且保留应用程序池设置,因此从 msdeploy 的角度来看是成功的。但是,如果这是解决方案,如何通知 …

web-deployment msdeploy

4
推荐指数
1
解决办法
6123
查看次数

MSDeploy - sync命令将文件复制到iis app的子文件夹

我想执行一个后期构建步骤,使用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应用程序中.

iis msbuild iis-6 msdeploy jenkins

4
推荐指数
1
解决办法
6417
查看次数