使用构建子文件夹解决方案的Postsharp方面

时间:2014-08-20 07:26:32

标签: .net projects-and-solutions postsharp aspect

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

<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来编译子文件夹中的项目?

1 个答案:

答案 0 :(得分: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引用(将它放在一个包文件夹中并将它们复制一次到输出文件夹中)。

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