为了发布我的 .Net Web 应用程序,我需要调用自定义构建任务。此任务采用转换后的 web.config 并使用给定的提供程序保护某些部分。定义任务的程序集与项目一起编译。
该任务需要加载某些程序集才能成功保护 web.config 部分。所需的程序集 dll 通过属性传递给任务,然后由 Assembly.LoadFrom() 加载。
我已经成功地通过 $(_WebConfigTransformOutput) 属性获取了转换后的 web.config。但是,在调用该工具时,我需要一些已编译并包含在包中的程序集的位置。
我的问题是如何引用复制到 PackageTmp 目录的 dll,我似乎找不到引用该目录位置的属性。
构建目标示例(加密任务是我自定义包含的任务,$(Somelocation?) 必须最终指向包 bin 目录):
<Target Name="EncyptWebConfig" AfterTargets="PipelineCollectFilesPhase">
<PropertyGroup>
<ConfigFile>$(_WebConfigTransformOutput)</ConfigFile>
<Sections>
connectionStrings;
caracal/authenticationSettings;
caracal/cookieAuthentication;
system.net/mailSettings;
</Sections>
<!-- The first assembly contains the SecurityProvider,
The second and third assemblies are for the caracal/* sections
-->
<Assemblies>
$(Somelocation?)\ConfigProtectionAssembly.dll;
$(Somelocation?)\Caracal.Application.dll;
$(Somelocation?)\Caracal.AuthenticationModule.dll;
</Assemblies>
<Provider>CaracalConfigEncryption</Provider>
</PropertyGroup>
<Encrypt ConfigFile="$(ConfigFile)" Assemblies="$(Assemblies)" Provider="$(Provider)" Sections="$(Sections)"/>