2

我们有以下构建输出结构:

<Root>
        modules
            Module1.dll
            Module2.dll
        functions
            Function1.dll
            Function1.dll
        ...
    Main.exe
    CommonLibraries.dll
    PostSharp.dll
    NLog.dll
    Newtownsoft.Json.dll
    OurAspect.dll
    ...

如果我们在根目录 ( ) 中的项目上使用方面(取决于NLog和),它会很好地工作。Json.Net[assembly: OurAspect]

如果我们尝试在子文件夹中编译的项目中使用此方面,则会出现异常,即无法找到该方面所依赖的 DLL。

我们如何配置 PostSharp 以使用根构建目录中的 DLL 来编译子文件夹中的项目?

4

1 回答 1

2

经过两天的测试和尝试,我通过使用解决方案范围的配置(使用 .pssln 文件)解决了这个问题。

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.postsharp.org/1.0/configuration">
    <Property Name="LogEnabled" Value="False" />
    <SearchPath Directory="packages\TraceLogAspectLib.1.0.26\lib\net40" />
    <SearchPath Directory="packages\NLog.3.1.0.0\lib\net40" />
    <SearchPath Directory="packages\Newtonsoft.Json.6.0.4\lib\net40" />
    <Multicast xmlns:aop="clr-namespace:aop.namespace.aspect;assembly:LogAspectLib">
        <When Condition="{$LogEnabled}">
            <aop:TraceLogAspect AttributeTargetTypes="solution.namespace.*" />
        </When>
    </Multicast>
</Project>

这些项目仅引用 PostSharp 库(通过 NuGet 并关闭复制标志)。主项目具有对 PostSharp、Aspect 及其依赖项的 NuGet 引用(将其放在包文件夹中并将它们复制到输出文件夹一次)。

该解决方案适用于我们的解决方案结构。

于 2014-08-22T12:39:57.600 回答