我有两种不同的方式来部署我的网络应用程序 - 一种是通过 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
预览功能让我知道我的转换文件格式正确。不知道我可能错过什么。
答案 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>