Member 12677894 Ответов: 1

После резкого ссылкой классный выпуск


у меня есть class libraray, который имеет два файла класса отдельно, один файл класса имеет код аспекта post sharp следующим образом,
[Serializable]
    
        public class TimingAspect : PostSharp.Aspects.OnMethodBoundaryAspect
        {
            [NonSerialized]
            Stopwatch _StopWatch;

        public override void OnEntry(PostSharp.Aspects.MethodExecutionArgs args)
            {
                _StopWatch = Stopwatch.StartNew();

                base.OnEntry(args);
            }

            public override void OnExit(PostSharp.Aspects.MethodExecutionArgs args)
            {

                StackFrame frame = new StackTrace().GetFrame(1);
                System.IO.StreamWriter file = new System.IO.StreamWriter("D:\\execution time.txt", true);
                file.WriteLine(frame.GetMethod().DeclaringType.FullName + "-------" + frame.GetMethod().Name + "-----" + _StopWatch.ElapsedMilliseconds);
                file.Close();

                base.OnExit(args);
            }
        }


другой файл класса имеет следующее объявление сборки
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Reflection;
[assembly: AspectLibrary.TimingAspect(AttributeTargetTypes = "Employee.*", AttributeTargetMembers = "Page_Load",AttributePriority=1)]

чтобы добавить этот аспект ко всем пространствам имен моего проекта, и я ссылался на эту библиотеку классов в своем проекте, но атрибут не будет применяться к пространствам имен моих проектов

Что я уже пробовал:

попытался добавить отдельные библиотеки для каждого класса, и если я добавлю этот класс объявления сборки внутри проекта, он будет работать, но я хочу, чтобы он был снаружи

OriginalGriff

Это не очень хороший вопрос - мы не можем понять из этого малого, что вы пытаетесь сделать.
Помните, что мы не можем видеть ваш экран, получить доступ к вашему жесткому диску или прочитать ваши мысли.
Возможно, простой пример файлов и сообщений об ошибках поможет нам понять, что именно вы пытаетесь сделать?
Используйте виджет" улучшить вопрос", чтобы отредактировать свой вопрос и предоставить более подробную информацию.

1 Ответов

Рейтинг:
0

Richard Deeming

Атрибуты уровня сборки применяются к сборке, в которой они определены - в данном случае к библиотеке классов PostSharp.

Они делают НЕ применитесь к каждой сборке, которая добавляет ссылку на вашу сборку.

Вам нужно добавить объявление атрибута сборки в каждый проект, где вы хотите применить свой аспект PostSharp.


Member 12677894

окей, поняла,
но есть ли способ, которым я могу поместить атрибут аспекта времени во все классы в пространстве имен employee, просто сославшись на dll в моем проекте

Richard Deeming

Нет.