Почему postsharp говорит, что я использую премиум-функцию, а afaik — нет?

#c# #postsharp

#c# #postsharp

Вопрос:

Я использую postsharp, и я использую OnMethodBoundaryAspect , и в соответствии с этим он доступен в версии сообщества. Это практически единственный аспект, который я использую. Однако я использую postsharp.config файл и не уверен, что это бесплатная функция. Файл конфигурации :

 <?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.postsharp.org/1.0/configuration">
  <Multicast xmlns:my="clr-namespace:ExceptionAutoSerializer.Aspects;assembly:ExceptionAutoSerializer">
    <my:MethodBoundaryAspect  AttributeTargetTypes="My.Custom.Namespace.*" />
  </Multicast>
</Project>
 

Когда я пытаюсь скомпилировать большой проект, я получаю эту ошибку :

Ошибка лицензии. В проекте используются нелицензионные премиум-функции. Не разрешается улучшать типы с общим количеством более 1000 строк кода в проекте с помощью функций, не охватываемых установленными лицензиями, но было улучшено 3949 строк кода. MyCustomProject

Но в нем не указано, какую функцию я использую, поэтому ее сложно отлаживать. Есть ли какой-нибудь способ узнать, что вызывает ошибку?

Комментарии:

1. Я не знаю всей полноты бесплатных функций, но если вы только начали испытывать это, не могли бы вы довольно легко отследить, какое дополнение к вашему коду вызвало это?

2. Я использовал postsharp уже около 4 недель в PoC si, не так просто вернуться назад, но я сделаю все возможное

3. Рад видеть, что вы нашли причину. Чтобы легче находить причины подобных проблем (или многих других проблем с кодом) Я бы рекомендовал вам часто комментировать свой код, а также пытаться создавать свой код. Просто дружеское предложение, если это не то, что вы уже делаете. Небольшие коммиты — хорошая практика 🙂

Ответ №1:

Документацию о том, что бесплатно, а что нет, довольно сложно найти, imo. Но я нашел это, и вот как я это решил:

Декораторы методов и перехватчики :

Оба аспекта methodboundaryaspect и MethodInterceptionAspect можно использовать бесплатно, но семантическое консультирование асинхронных методов является премиум-функцией.

Чтобы отключить семантическое консультирование, вы должны установить для свойства semanticallyadvisedmethod KINDS значение None в конструкторе aspect .

Комментарии:

1. Чтобы понять последствия, прочитайте doc.postsharp.net/semantic-advising .