Xml文件使用一键式发布进行转换,但不进行Web部署

时间:2012-07-24 14:44:31

标签: tfs tfsbuild webdeploy slowcheetah oneclick

我有两种不同的方式来部署我的网络应用程序 - 一种是通过 IIS Web Deploy ,通过自定义构建模板中的 MSBuild 参数连接,并使用一键发布内置于 Visual Studio 。我还安装了 Slow Cheetah 转换,并且可以成功transform Web.config个文件。

但是,我坚持使用Nlog.config文件。如果我使用一键式发布,则webapp可以使用更新的配置文件进行部署。但是,使用实际的构建过程,没有任何变化。源Nlog.config文件将复制到远程服务器上的放置位置,部署包和输出文件夹。

.csproj文件的Nlog设置方式与web.config相同,即

<Content Include="NLog.config">
  <TransformOnBuild>true</TransformOnBuild>
    <Content Include="Web.config">
  <SubType>Designer</SubType>
  <TransformOnBuild>true</TransformOnBuild>
<Content Include="NLog.Debug.config">
  <DependentUpon>NLog.config</DependentUpon>
  <IsTransformFile>True</IsTransformFile>

SlowCheetah预览功能让我知道我的转换文件格式正确。不知道我可能错过什么。

1 个答案:

答案 0 :(得分:0)

嗯,我真的很不高兴。经过多次探索,我发现我需要包含以下内容 -

 <Import Project="TransformsFiles.targets" />
   <PropertyGroup>
     <TransformOnBuild>true</TransformOnBuild>
   </PropertyGroup>

正好在最终的Project标签之上,正如Sayed提到here。这实际上会转换文件,但它们仍然无法成功部署。我将不得不添加一些后期构建事件或其他东西来处理它。不是最好的解决方案,但它至少可以工作。

更新:为了理解,为了部署文件,我必须编辑.csproj文件以包含新目标并将它们手动转储到远程服务器,但只有在转换完成后才能。查看您的日志文件以查看发生了什么,然后只需获取转换后的文件并将其移动到远程服务器。代码的那部分看起来像这样 -

<Target Name="PostTransformNLogConfig" AfterTargets="TransformAllFiles">
  <Copy Condition="Exists('d:\Builds\Binaries\NLog.config' )"
        SourceFiles="d:\Builds\NLog.config"
        DestinationFiles="\\remoteserver\NLog.config" />
</Target>