Web.config转换

时间:2016-04-25 19:34:26

标签: c# visual-studio msbuild

VS Publish有效,但不适用于MSBuild。

我不是MSBuild的专家,但我会完成整个过程。

关注此网站

https://msdn.microsoft.com/en-us/vs2010trainingcourse_webdevelopment_topic4.aspx

,我已经完成了步骤1-4。当我跑步"发布"在VS 2015中,我选择了"文件系统"对于该方法,并根据"配置"更改了web.config文件 ;选择,没问题。

但是,在运行MSBuild时,

C:\Program Files (x86)\MSBuild\14.0\Bin>msbuild.exe "C:\pathToProject\project.sln" /p:Configuration=XXXX /p:OutputPath="C:\pathToOutputFolder"

没用。 web.config执行 NOT 更改。

我错过了其他什么吗?

1 个答案:

答案 0 :(得分:0)

有一个名为TransformXml的MSBuild任务正在执行Publish菜单项,但是没有从命令行执行。它不是项目文件的一部分,您必须手动执行它。

我有一个构建服务器,它运行一个自定义MSBuild脚本来部署一个站点,并用它执行转换:

<!-- Transform the profile-specific .config file into Web.config, placing result in staging folder -->
<Target Name="TransformWebConfig" Condition=" '$(WebsiteTransformFile)' != '' ">
    <Error Condition="!Exists('$(WebsiteTransformFile)')" Text="Web configuration file $(WebsiteTransformFile) not found." />
    <Message Text="Transforming Web.config with $(WebsiteTransformFile)" />
    <TransformXml Source="Web.config"
            Transform="$(WebsiteTransformfile)"
            Destination="Web.transformed.config" />
    <Copy SourceFiles="Web.transformed.config" DestinationFiles="Web.config" />
    <Delete Files="Web.transformed.config" />
</Target>

属性$(WebsiteTransformFile)是我自己的属性,在文件的其他位置定义,与配置文件相对应,如Web.release.config

您可以将其添加到.csproj文件中,或将其放在单独的文件中,然后手动执行。最好手动执行,这样当您按F5在本​​地运行时,您将使用未经转换的web.config,而不是您需要在服务器上部署的转换版本。< / p>