.Net自定义构建任务,用于加密转换后的web.config

时间:2012-11-21 11:06:37

标签: .net msbuild task publish

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

0 个答案:

没有答案