gpt4 book ai didi

.net - 使用 AfterTargets 的 MSBuild 任务在转换后加密 web.config

转载 作者:行者123 更新时间:2023-12-02 05:06:14 27 4
gpt4 key购买 nike

我是 MSBuild 的新手,我正在尝试在我的项目中设置一个 MSBuildSettings.xml 文件,通过项目首选项中的“构建后事件命令行”选项调用,它执行 3 个特定任务。

$(MSBuildBinPath)\msbuild.exe "$(ProjectDir)MSBuild\MSBuildSettings.xml"

MSBuildSettings 执行 3 个特定任务。我的前 2 个任务(下面的“YUI”和“LESS”)工作得很好。我要添加的新任务(“加密”)是在转换发生后加密 web.config。

我正在使用结构如下的单个 xml 文件:

<Project DefaultTargets="YUI;LESS;Encrypt;">
...
<Target Name="YUI">...</Target>

<Target Name="LESS" DependsOnTargets="YUI">...</Target>

<Target Name="Encrypt" AfterTargets="CopyAllFilesToSingleFolderForPackage">
<Exec Command="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -pef &quot;connectionStrings&quot; $(MSBuildProjectDirectory)\..\obj\Release\Package\PackageTmp -prov &quot;MyProtectedDataProvider&quot;" />
</Target>
</Project

我主要尝试通过命令行使用 aspnet_regiis 加密 connectionStrings 部分。 (我也有自己的 Provider 定义和工作。)我确实觉得有点奇怪,我试图修改 PackageTmp 文件夹中的 web.config,但据我所知,这是转换后的 web 之前的最终位置.config 已部署(我显然不想更新项目中的原始 web.config 文件)。我认为命令/执行没有任何问题,因为它的时间安排。我根本不知道如何让这第三步仅在转换发生后执行。

我已经启用了构建输出的详细 View 选项,并通过 Microsoft.Web.Publishing.targets 文件进行挖掘,试图提出一个我可以用来调用我的 web.config 加密步骤的目标转换发生后,但无论我尝试什么 AfterTargets,我似乎总是得到:

The target "whatever" does not exist in the project.

我已经尝试过 PipelinePreDeployCopyAllFilesToOneFolder、TransformWebConfig、PipelineTransformPhase、CopyAllFilesToSingleFolderForPackage 等。

附加说明:我知道 web.config 仅在发布时转换(我正在使用文件系统选项发布)。

这也是普通的 MSBuild(没有 TFS 团队构建或类似的东西)。

对于用于加密 web.config 部分的转换后步骤的任何其他或替代选项,我们也将不胜感激。

最佳答案

我最终只使用了具有以下结构的 *.wpp.targets 文件:

<Project xmlns="http://schemas.microsoft.com/developer/MsBuild/2003">
<Target Name="AfterBuild">
... My YUI steps and my LESS steps ...
</Target>
<Target Name="Encrypt" AfterTargets="CopyAllFilesToSingleFolderForPackage">
... My web.config encrypt steps ...
</Target>
</Project>

老实说,我并不完全理解第一步 (AfterBuild) 命名背后的原因,它只是自动知道何时运行。我真的宁愿有自己的名字和一个清晰的 AfterTargets 或 BeforeTargets 之类的东西,但我没有采用这种方法。带有 AfterTargets 的第二个目标对我来说有些意义。

但无论如何,它有效。现在一切都在一个 wpp.targets 文件中,并且看起来运行良好。每次更改 wpp.targets 文件时都必须卸载/重新加载项目文件有点痛苦 - 这太愚蠢了。

关于.net - 使用 AfterTargets 的 MSBuild 任务在转换后加密 web.config,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11198252/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com