我们有以下构建输出结构:
<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来编译子文件夹中的项目?
答案 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引用(将它放在一个包文件夹中并将它们复制一次到输出文件夹中)。
此解决方案适用于我们的解决方案结构。