要发布我的.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)"/>