PostSharp 不适用于 Visual Studio 2015
PostSharp not working on Visual Studio 2015
我有一个 Visual Studio 2015 解决方案,我在其中复制并粘贴了一些我在 Visual Studio 2013 项目中成功使用的 PostSharp 验证属性。
项目全部编译成功,运行s。不幸的是,旨在测试我的验证属性的单元测试失败了。通过调试,我发现我的属性 none 一直是 运行。我已确保在项目引用以及 .xproj 文件中正确引用了 PostSharp 包。
我的验证属性代码如下:
using System;
using PostSharp.Aspects;
using PostSharp.Reflection;
namespace Foo.Domain.Model.ValidationAttributes
{
/// <summary>
/// Validates the parameter to strictly not be null (empty and whitespace is valid). Throws a System.ArgumentNullException if assigned a null value.
/// </summary>
[Serializable]
public sealed class NotNullAttribute : LocationInterceptionAspect, ILocationValidationAspect<object>
{
public NotNullAttribute()
{
}
public override void OnSetValue(LocationInterceptionArgs args)
{
Exception ex = ValidateValue(args.Value, args.LocationName, args.Location.LocationKind);
if (ex != null)
{
throw ex;
}
args.ProceedSetValue();
}
public Exception ValidateValue(object value, string locationName, LocationKind locationKind)
{
return value == null ? new ArgumentNullException(locationName, string.Format("The parameter '{0}' may not be null.", locationName)) : null;
}
}
}
我的project.json显示添加的依赖项:
{
"version": "1.0.0-*",
"description": "MyProject Domain Class Library",
"tags": [ "MyProject" ],
"projectUrl": "",
"licenseUrl": "",
"dependencies": {
"PostSharp": "4.1.21",
"PostSharp.Patterns.Common": "4.1.21",
"PostSharp.Patterns.Model": "4.1.21"
},
"frameworks": {
"net451": { }
}
}
我的 .xproj 文件显示了添加的 PostSharp 目标(我检查过它存在于路径中):
<Import Project="..\packages\PostSharp.1.21\tools\PostSharp.targets" />
从 PostSharp 文档来看,VS2015 似乎得到了完全支持,但我似乎无法让这些方面发挥作用。我需要做些什么才能在 Visual Studio 2015 年启动并 运行ning PostSharp?
PostSharp 目前不支持 ASP.NET5 中引入的新项目构建系统(Compatibility 页面上提到了这一点)。当编译运行 "in-memory" 时,不会使用通常的 MSBuild 扩展点,也不会调用 PostSharp。您可以尝试在 VS 中完全构建您的解决方案,看看这些方面是否以这种方式应用。
PostSharp 团队计划在其中一个即将推出的版本中为新的 ASP.NET 构建系统提供支持。
更新
ASP.NET PostSharp 5 连接器的预览版已于 GitHub (https://github.com/postsharp/PostSharp.Dnx) 发布。这将是 "work-in-progress",直到 ASP.NET 5 RTM 发布。
我有一个 Visual Studio 2015 解决方案,我在其中复制并粘贴了一些我在 Visual Studio 2013 项目中成功使用的 PostSharp 验证属性。
项目全部编译成功,运行s。不幸的是,旨在测试我的验证属性的单元测试失败了。通过调试,我发现我的属性 none 一直是 运行。我已确保在项目引用以及 .xproj 文件中正确引用了 PostSharp 包。
我的验证属性代码如下:
using System;
using PostSharp.Aspects;
using PostSharp.Reflection;
namespace Foo.Domain.Model.ValidationAttributes
{
/// <summary>
/// Validates the parameter to strictly not be null (empty and whitespace is valid). Throws a System.ArgumentNullException if assigned a null value.
/// </summary>
[Serializable]
public sealed class NotNullAttribute : LocationInterceptionAspect, ILocationValidationAspect<object>
{
public NotNullAttribute()
{
}
public override void OnSetValue(LocationInterceptionArgs args)
{
Exception ex = ValidateValue(args.Value, args.LocationName, args.Location.LocationKind);
if (ex != null)
{
throw ex;
}
args.ProceedSetValue();
}
public Exception ValidateValue(object value, string locationName, LocationKind locationKind)
{
return value == null ? new ArgumentNullException(locationName, string.Format("The parameter '{0}' may not be null.", locationName)) : null;
}
}
}
我的project.json显示添加的依赖项:
{
"version": "1.0.0-*",
"description": "MyProject Domain Class Library",
"tags": [ "MyProject" ],
"projectUrl": "",
"licenseUrl": "",
"dependencies": {
"PostSharp": "4.1.21",
"PostSharp.Patterns.Common": "4.1.21",
"PostSharp.Patterns.Model": "4.1.21"
},
"frameworks": {
"net451": { }
}
}
我的 .xproj 文件显示了添加的 PostSharp 目标(我检查过它存在于路径中):
<Import Project="..\packages\PostSharp.1.21\tools\PostSharp.targets" />
从 PostSharp 文档来看,VS2015 似乎得到了完全支持,但我似乎无法让这些方面发挥作用。我需要做些什么才能在 Visual Studio 2015 年启动并 运行ning PostSharp?
PostSharp 目前不支持 ASP.NET5 中引入的新项目构建系统(Compatibility 页面上提到了这一点)。当编译运行 "in-memory" 时,不会使用通常的 MSBuild 扩展点,也不会调用 PostSharp。您可以尝试在 VS 中完全构建您的解决方案,看看这些方面是否以这种方式应用。
PostSharp 团队计划在其中一个即将推出的版本中为新的 ASP.NET 构建系统提供支持。
更新
ASP.NET PostSharp 5 连接器的预览版已于 GitHub (https://github.com/postsharp/PostSharp.Dnx) 发布。这将是 "work-in-progress",直到 ASP.NET 5 RTM 发布。