1

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

4

0 回答 0