Msbuild MS Deploy是否可以进行打包和转换,但不能进行部署?
使用.NET4.0中的msbuild,我可以构建具有“Package”目标的web项目,并且它可以很好地将包放入zip文件中。但是,当我查看其中的web.config时,它没有被转换,它有“$(ReplacableToken\u web\u SiteConnection-web.config连接字符串\u 0)” 我可以运行“TransformWebConfig”目标,它将执行正确的转换,但只是在它自己的思洛存储器中 我还可以运行“Build”目标并传递“DeployOnBuild=True;DeployTarget=MSDeployPublish”属性,它将在完成正确的web.config转换后在我的服务器上部署包Msbuild MS Deploy是否可以进行打包和转换,但不能进行部署?,msbuild,web-config,msdeploy,Msbuild,Web Config,Msdeploy,使用.NET4.0中的msbuild,我可以构建具有“Package”目标的web项目,并且它可以很好地将包放入zip文件中。但是,当我查看其中的web.config时,它没有被转换,它有“$(ReplacableToken\u web\u SiteConnection-web.config连接字符串\u 0)” 我可以运行“TransformWebConfig”目标,它将执行正确的转换,但只是在它自己的思洛存储器中 我还可以运行“Build”目标并传递“DeployOnBuild=True;D
但是,如果我想手动将包部署到服务器上,如何使用“TransformWebConfig”创建一个“包”,以便zip文件中包含最终的web.config?我们这样做的方式是在打包之前修改项目构建以进行转换 目标是call TransformXml,是Microsoft.Web.Publishing.Tasks.dll的一部分 在你自己的目标中
<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll" />
如果要避免发生这种情况,则需要在生成中设置属性。你可以用两种方法来做
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
ToolsVersion="4.0">
<PropertyGroup>
<AutoParameterizationWebConfigConnectionStrings>false</AutoParameterizationWebConfigConnectionStrings>
</PropertyGroup>
</Project>
假的
在本例中,您正在设置属性
AutoParameterizationWebConfigConnectionStrings
,该属性告诉Web发布管道不要在Web.config中为连接字符串插入那些{}占位符。谢谢,它工作起来很有魅力,为我节省了很多时间。我确实花了很多时间为不同的部署环境转换多个Web.config文件。我将其添加到web应用程序的.csproj文件中,但我不太明白该将该部分放在何处。如何在我的.csproj文件中找到“最合适的项目组(“内容”最有可能)”以及如何“确保在调用包之前触发目标”?这涉及占位符,但没有解释如何在打包时应用转换。
-skip:objectname=filepath,absolutepath=web\..*\.config
-replace:objectName=filepath,match=.*web\.usethisone\.config,replace=web.config
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
ToolsVersion="4.0">
<PropertyGroup>
<AutoParameterizationWebConfigConnectionStrings>false</AutoParameterizationWebConfigConnectionStrings>
</PropertyGroup>
</Project>