Можно ли использовать аспекты PostSharp в проектах веб-сайтов?

Я пытаюсь использовать аспект PostSharp в проекте веб-сайта в VS2012. Кажется, он работает нормально, когда я настраиваю проект веб-приложения, но когда я применяю атрибут аспекта к методу на странице в проекте веб-сайта, он компилируется и работает нормально, но мой OnMethodBoundaryAspect никогда не попадает. Я пробовал устанавливать точки останова и ведение журнала из методов аспекта.

Поддерживает ли PostSharp проекты веб-сайтов? если да, то что мне не хватает?

Пожалуйста, не комментируйте, почему я хочу использовать веб-сайт вместо веб-приложения. К сожалению, это требование (не спрашивайте).

Это мой код аспекта (весь на vb.net), но, как я уже сказал, он отлично работает в проекте веб-приложения:

Imports PostSharp.Aspects

Namespace TestAopLib

<Serializable>
Public Class AopTester
    Inherits OnMethodBoundaryAspect

    Public Overrides Sub OnEntry(args As MethodExecutionArgs)
        MyBase.OnEntry(args)
        Debug.WriteLine("In OnEntry")
    End Sub

    Public Overrides Sub OnExit(args As MethodExecutionArgs)
        MyBase.OnExit(args)
        Debug.WriteLine("In OnExit")
    End Sub

    Public Overrides Sub OnSuccess(args As MethodExecutionArgs)
        MyBase.OnSuccess(args)
        Debug.WriteLine("In OnSuccess")
    End Sub

    Public Overrides Sub OnException(args As MethodExecutionArgs)
        MyBase.OnException(args)
        Debug.WriteLine("In OnException")
    End Sub

End Class

End Namespace

person ChrisC    schedule 08.01.2015    source источник
comment
Зачем людям PostSharp беспокоиться о проектах веб-сайтов? Это не проекты, и ничего подобного нет. Это детские игрушки.   -  person John Saunders    schedule 08.01.2015
comment
@JohnSaunders Хотя я с вами не возражаю, ваш комментарий бесполезен.   -  person ChrisC    schedule 08.01.2015
comment
Он прав. Они просто создают более простой код. Они не имеют отношения к веб-сайту. Это «детская игрушка», с которой может играть каждый (я имею в виду использовать ее для простой жизни).   -  person CodingSource    schedule 08.01.2015
comment
Аспектно-ориентированное программирование - это непросто. Неудивительно, что инструменты, разработанные для проектов Visual Studio, не работают с проектами веб-сайтов, поскольку они уникальны тем, что не имеют файлов проекта. В этом отношении они были особенными вот уже десять лет.   -  person John Saunders    schedule 08.01.2015
comment
PostSharp зависит от переплетения IL (и, возможно, большего), которое происходит после сборки проекта. Проекты веб-сайтов не строятся. Может быть, если вы воспользуетесь функцией предварительной компиляции? Но когда я использовал PostSharp, он сильно зависел от MSBUILD, он же файл проекта, которого у проектов веб-сайтов нет. Им пришлось бы использовать совершенно другой механизм для работы с проектами веб-сайтов.   -  person John Saunders    schedule 08.01.2015
comment
Это веб-сайты ASP.NET? Посетите следующее: postsharp4aspnet.codeplex.com PostSharp изначально поддерживает веб-приложения ASP.NET   -  person CodingSource    schedule 08.01.2015


Ответы (1)


Существует проект с открытым исходным кодом, который достигает именно этого (как также упоминается CodingSource). Однако это было сделано для PostSharp 2.x и не рекомендуется и не поддерживается (как указано на домашней странице проекта). Скорее всего, он не будет работать с PostSharp 3+ без серьезных проблем.

PostSharp (в настоящее время) интегрирован через MSBuild (как также упомянул Джон Сондерс), который не используется проектами веб-сайтов.

Хотя в своей основе PostSharp является инструментом командной строки, он получает так много информации от MSBuild, что довольно сложно заставить его работать отдельно (и в первую очередь это не рекомендуется, не документируется и не поддерживается).

P.S .: Сейчас я работаю в PostSharp technologies.

person Daniel Balas    schedule 08.01.2015
comment
Дэниел, спасибо за ответ. Вы не рекомендуете этот инструмент, поэтому вам не необходимо говорить, что вы работаете над PostSharp, но это может быть хорошей идеей. Я знаю, что вы говорите об этом в своем профиле, но, возможно, также скажите об этом в своем ответе. - person John Saunders; 08.01.2015
comment
@JohnSaunders Я понимаю, что мой ответ не рекомендует то, что близко к рекомендации собственного продукта. Я просто хотел бы знать, имеете ли вы в виду, что моя принадлежность должна быть указана по той же причине, что и при рекомендации собственного продукта, или для повышения достоверности ответа. Спасибо! - person Daniel Balas; 08.01.2015
comment
Я бы рекомендовал указать вашу принадлежность, чтобы дать понять, 1) что вы знаете, о чем говорите, и 2) что это не анонимная самореклама - person John Saunders; 08.01.2015
comment
@JohnSaunders 2) в этом случае немного слабоват, так как я говорю не использовать наш старый побочный проект. Так что единственное преимущество в том, что OP не будет злиться на нас. В любом случае спасибо за разъяснения. - person Daniel Balas; 08.01.2015
comment
@DanielBalas Извините за позднюю пометку, на сегодняшний день ваш ответ по-прежнему точен? - person Amon; 30.11.2020
comment
@Amon Для веб-сайтов без проектов (которые IIRC не создаются из пользовательского интерфейса в VS 2017 и более поздних версиях) это все еще верно. Однако все веб-проекты с csproj / vbproj (.NET или .NET Core) работают должным образом (с тех пор это также не изменилось). - person Daniel Balas; 01.12.2020