如何解决Postsharp:共享库中我自己的方面不能在不另外引用postharp的情况下使用-为什么?
正如标题所示,我在重用自定义方面时遇到问题。我在名为 Postsharp.Why (引用nuget PostSharp 6.7.9-rc )
的项目中创建了一个非常简单的方面(netstandard2.0)。namespace Postsharp.Why
{
using System.Threading.Tasks;
using PostSharp.Aspects;
using PostSharp.Serialization;
[PSerializable]
public class ReasonAttribute : MethodInterceptionAspect
{
private string _reason;
public ReasonAttribute(string reason = "i fail to see")
{
this._reason = reason;
}
public sealed override void OnInvoke(MethodInterceptionArgs args)
{
args.ReturnValue = _reason;
}
public sealed override async Task OnInvokeAsync(MethodInterceptionArgs args)
{
args.ReturnValue = _reason;
}
}
}
此外,我还创建了两个进一步的测试(xunit)项目
- Postsharp.Question.Test。失败 默认项目设置 +对 Project.Why 和 的项目引用
- Postsharp.Question.Test.Works 还引用了相同的Postsharp版本。
代码:
namespace Postsharp.Question.Test.Works
{
using Postsharp.Why;
public class Test_PostSharp_Aspects
{
[Reason("!")]
private string foooooo()
{
return "?";
}
[Fact]
public void Test_ShouldReturn_Exclamation()
{
Assert.Equal("!",foooooo());
}
}
}
请注意,所有项目都可以正常编译,没有错误。顾名思义,在 Fail 项目中,该方面不起作用,我想知道如何使它运行(不添加引用),或者如何指出使用的方面将不会对使用该库的任何人运行。 如果无法做到这一点,我想知道我该如何强制使用 Postsharp.Why 项目的任何人安装该软件包?
谢谢!
解决方法
通过以下方式在库项目中包含PostSharp包引用(在本例中为PostSharp。为什么),使得使用PostSharp构建引用项目:
<PackageReference Include="PostSharp" Version="6.7.9-rc" PrivateAssets="none" />
将您的库打包到具有PostSharp包作为依赖项的NuGet包中也可以,但是,除非您要发布您的库,否则就太过分了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。