0

我有两种不同的方式来部署我的 Web 应用程序 - 一种通过IIS Web Deploy,通过自定义构建模板中的MSBuild参数连接,以及使用内置于Visual Studio的One-click publish 。我还安装了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预览功能也让我知道我的转换文件格式正确。不知道我可能会错过什么。

4

1 回答 1

0

嗯,我真的很喜欢那个。经过一番摸索,我发现我需要包括以下内容 -

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

正如 Sayed在这里提到的,就在最终项目标签的正上方。这实际上会转换文件,但它们仍然不会成功部署。我将不得不添加一些构建后的事件或其他东西来解决这个问题。不是最好的解决方案,但至少它是有效的。

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

<Target Name="PostTransformNLogConfig" AfterTargets="TransformAllFiles">
  <Copy Condition="Exists('d:\Builds\Binaries\NLog.config' )"
        SourceFiles="d:\Builds\NLog.config"
        DestinationFiles="\\remoteserver\NLog.config" />
</Target>
于 2012-07-25T12:31:30.230 回答