使用WebDeploy进行配置转换,预览不起作用



我想对自定义文件使用配置转换,如果我用MSDeployPublish替换???,则Preview功能不起作用,并且它替换了解决方案中的本地文件。但是,发布的工作不使用 Preview,使本地文件未触及。

配置文件:

AppSettings.config  
└AppSettings.Test.config  
└AppSettings.Stage.config  
└AppSettings.Release.config  
ConnectionString.config  
└ConnectionString.Test.config  
└ConnectionString.Stage.config  
└ConnectionString.Release.config  

使用转换进行预览的目标的正确名称是什么?使用WebDeploy进行预览时web.config的工作方式

<Target Name="???">
   <TransformXml Source="App_ConfigAppSettings.config" Destination="App_ConfigAppSettings.config" Transform="App_ConfigAppSettings.$(Configuration).config" />
    <TransformXml Source="App_ConfigConnectionStrings.config" Destination="App_ConfigConnectionStrings.config" Transform="App_ConfigConnectionStrings.$(Configuration).config" />
</Target>

我不想使用诸如slowcheetah之类的扩展,只需构建功能。

<Target Name="Build">也有效

更新1

我已经成功发布而没有更改本地配置文件:

Destination="$(_PackageTempDir)App_ConfigConnectionStrings.config"

,但是预览仍未转换配置(当我为输出定义消息时,它不会出现)。当我在发布屏幕上单击"预览"时,发生什么黑魔法?

我已经尝试了目标:TransformWebConfigCoreCopyAllFilesToSingleFolderForPackageGatherAllFilesToPublish

我已经做到了。

目标名称应该是不存在的自定义名称。然后,应用 Package 的值指定AfterTargets属性。该目标几乎发生在链的末端,并确保创建$(_PackageTempDir)目录。

转换是在包装目录中完成的。这样,可以确保使用WebDeploy进行预览时,它将正确比较文件,而不会在源控件中更改本地文件。

这是定义:

<Target Name="CustomConfigTransform" AfterTargets="Package">
  <TransformXml Source="App_ConfigAppSettings.config" Destination="$(_PackageTempDir)App_ConfigAppSettings.config" Transform="App_ConfigAppSettings.$(Configuration).config" />
  <TransformXml Source="App_ConfigConnectionStrings.config" Destination="$(_PackageTempDir)App_ConfigConnectionStrings.config" Transform="App_ConfigConnectionStrings.$(Configuration).config" />
</Target>

当然可以有更好的方法:在Microsoft.Web.Publishing.targets的目标CollectWebConfigsToTransform中,它应该以某种方式知道有更多的配置文件可转换。但目前不知道。

最新更新