DLL, содержащая пользовательский атрибут, остается заблокированной - PullRequest
0 голосов
/ 12 февраля 2011

Я пытаюсь написать атрибут для применения безопасности к методу.Нечто похожее на это:

[CustomAuthorization(SecurityAction.Demand)]
public void DoSomething()
{
  //Do Something
}

, поэтому у меня есть атрибут на другой сборке:

 public sealed class AuthorizationAttribute : CodeAccessSecurityAttribute
 {      
        public override IPermission CreatePermission()
        {
                if (!/*authorize here*/)
                {
                     return new CustomPermission(PermissionState.Unrestricted);
                }
                throw new Exception("IdentificationFailure.");
            } 
        }

        public AuthorizationAttribute(SecurityAction securityAction)
            : base(securityAction) {  }   
 }

Пока все работает.Я запускаю свою основную программу, и она выполняет свою работу.

Теперь я иду и изменяю сборку, имеющую атрибут, собираю ее.нет проблем.

Я возвращаюсь в своей основной программе, пытаюсь собрать, и там она терпит неудачу.Он не может скопировать новый построенный dll, потому что старый все еще используется процессом.

Кто-нибудь знает, что здесь происходит?

Ответы [ 3 ]

1 голос
/ 12 февраля 2011

Если вы используете VS2010, существует проблема с vhost.exe, не выпускающим экземпляр. Вы можете завершить процесс на нем пока, пока MS не выпустит исправление.

0 голосов
/ 01 августа 2011

Просто возникли проблемы при съемке той же самой проблемы, и все сводилось к тому, что мы использовали тестировщиков для тестирования частных методов.При выгрузке проектов юнит-тестов сборка освобождается.Наша сборка блокируется при компиляции.Пока не нашли решения, но отправили сообщение об ошибке в ms.Вы используете testaccessors?

Также см. Сборка используется другим процессом и https://stackoverflow.com/questions/6895038/testaccessor-impl-of-codeaccesssecurityattribute-locks-assembly

Ошибка MS: https://connect.microsoft.com/VisualStudio/feedback/details/682485/use-of-testaccessor-and-impl-of-codeaccesssecurityattribute-locks-assembly#details

0 голосов
/ 12 февраля 2011

Похоже, вы не вышли из своей основной программы, прежде чем пытаться восстановить ее. Проверьте запущенные процессы на наличие ссылок на вашу основную программу или ваш атрибут безопасности dll. Process Explorer может быть очень полезен здесь.

...