我已尝试了许多不同的配置,但我没有达到我的结果。
我正在尝试将配置转换添加到我的构建过程中,并且正在寻找从MSBuild执行此操作的正确方法,以便它通过MSDeploy显示在我的部署中。
我想将Web.Config转换添加到此过程。我想我最初会做一些简单的事情,比如名为“PEAppsEnvironmentName”的应用程序设置,我会根据当前环境制作Dev,Test或Prod。
对我来说,使用MSDeploy打包时,我似乎没有转换配置文件。
当我将DeployOnBuild选项设置为true运行MSBuild时,它会创建另一个具有适当转换的配置的包。看起来好像我不能完全匹配。最终结果是网页显示“无”(初始设置)而不是转换后的“开发”字符串。
我想如果我能在包装阶段找到如何使用MSDeploy来转换MSConfig,我会很高兴。
<appSettings>
<add key ="PEAppsEnvironmentName" value="None"/>
...
</appSettings>
<appSettings>
<add key ="PEAppsEnvironmentName" xdt:Transform="Replace" xdt:Locator="Match(key)" value="Development" />
</appSettings>
显示默认配置的属性组为“Dev”
<PropertyGroup>
<Configuration Condition="'$(Configuration)' == ''">Dev</Configuration>
</PropertyGroup>
我的MSBuild“编译”目标
<Target Name="Compile" DependsOnTargets="Init">
<MSBuild Projects="@(SolutionFile)" Targets="Rebuild" Properties="OutDir=%(BuildArtifacts.FullPath);DeployOnBuild=True"/>
</Target>
我的MSBuild“套餐”目标
<Target Name="Package" DependsOnTargets="Compile;Test">
<PropertyGroup>
<PackageDir>%(PackageFile.RootDir)%(PackageFile.Directory)</PackageDir>
<Source>%(WebSite.FullPath)</Source>
<Destination>%(PackageFile.FullPath)</Destination>
</PropertyGroup>
<MakeDir Directories="$(PackageDir)"/>
<Exec Command='"@(MSDeploy)" -verb:sync -source:iisApp="$(Source)" -dest:package="$(Destination)" '/>
</Target>
我的MSBuild“部署”目标
(擦洗PW等)
<Target Name='Deploy' DependsOnTargets='Package'>
<PropertyGroup>
<Source>%(PackageFile.FullPath)</Source>
</PropertyGroup>
<Exec Command ='"@(MsDeploy)" -verb:sync -source:package="$(Source)" -dest:iisApp=PEApps,computerName=$(WebServerName),username=[User],password=[Password]'/>
</Target>
答案 0 :(得分:1)
这个问题有很多,我不确定我是否与你完全在同一个页面上,但我会总结一下你对你所要求的印象。您有一个现有的Web项目,该项目与其他项目一起处于解决方案中。您需要能够打包Web项目,以便将其发布到多个目标。
我创建了一个可用于此目的的NuGet包。它被称为package-web。将其添加到Web项目时,它将更新打包过程。创建包时,包中将包含一些其他文件,包括所有web.config转换文件。还将在包旁边创建.ps1文件。您可以使用此脚本发布程序包。它将提示您运行哪个转换以及所有Web Deploy参数。您还可以将响应保存到文件,然后将它们传递给.ps1文件,以便您可以执行非交互式发布。我在http://nuget.org/packages/PackageWeb创建了一个5分钟的视频 包网:http://sedodream.com/2012/03/14/PackageWebUpdatedAndVideoBelow.aspx。仅供参考,我还没有与VS 2012合作,但是我正在修复这个问题,并且应该在VS 2012发布时更新它。
如果您没有找到有用的信息,可以看看我是如何在https://github.com/sayedihashimi/package-web实施解决方案的,您应该看到自己需要做的所有事情的示例。
仅供参考,如果您需要在包创建之后转换除web.config之外的任何文件,那么您应该查看我的VS扩展SlowCheetah。这是一篇关于如何将其集成到build server。
的博客