Por que o tipo de elemento de extensão de comportamento do WCF personalizado não está sendo encontrado?

Eu tenho uma solução que contém dois projetos. Um projeto é um projeto de aplicativo da Web do ASP.NET e um é uma biblioteca de classes. O aplicativo da web possui uma referência de projeto para a biblioteca de classes. Nenhum destes é fortemente nomeado.

Na biblioteca de classes, que chamarei de "Framework", tenho um comportamento de terminal (uma implementação IEndpointBehavior) e um elemento de configuração (uma classe derivada de BehaviorExtensionsElement). O elemento de configuração é para que eu possa anexar o comportamento do terminal a um serviço por meio da configuração.

No aplicativo da web, tenho um serviço WCF habilitado para AJAX. No web.config, tenho o serviço AJAX configurado para usar meu comportamento personalizado. A seção system.serviceModel da configuração é bem padrão e se parece com isso:

<system.serviceModel>
 <behaviors>
  <endpointBehaviors>
   <behavior name="MyEndpointBehavior">
    <enableWebScript />
    <customEndpointBehavior />
   </behavior>
  </endpointBehaviors>
 </behaviors>
 <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
 <services>
 <service name="WebSite.AjaxService">
  <endpoint
           address=""
           behaviorConfiguration="MyEndpointBehavior"
           binding="webHttpBinding"
           contract="WebSite.AjaxService" />
  </service>
 </services>
 <extensions>
  <behaviorExtensions>
   <add
       name="customEndpointBehavior"
       type="Framework.MyBehaviorExtensionsElement, Framework, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
  </behaviorExtensions>
 </extensions>
</system.serviceModel>

Em tempo de execução, isso funciona perfeitamente. O serviço WCF habilitado para AJAX usa corretamente meu comportamento de ponto de extremidade configurado personalizado.

O problema é quando tento adicionar um novo serviço AJAX WCF. Se eu adicionar -> Novo Item ... e selecionar "Serviço WCF habilitado para AJAX", posso vê-lo adicionar o arquivo .svc e codebehind, mas quando atualizar o arquivo web.config, recebo este erro:

O arquivo de configuração não é um arquivo de configuração válido para o WCF Service Library.

O tipo 'Framework.MyBehaviorExtensionsElement, Framework, Versão = 1.0.0.0, Culture = neutral, PublicKeyToken = null' registrado para extensão 'customEndpointBehavior' não pôde ser carregado.

Obviamente, a configuração é totalmente válida, pois funciona perfeitamente em tempo de execução. Se eu remover o elemento da minha configuração de comportamento temporariamente e, em seguida, adicionar o Serviço WCF habilitado para AJAX, tudo ocorrerá sem problemas.

Infelizmente, em um projeto maior em que teremos vários serviços com várias configurações, a remoção de todos os comportamentos personalizados temporariamente será propensa a erros. Enquanto eu percebo que eu poderia ir sem usar o assistente e fazer tudo manualmente, nem todo mundo pode, e seria bom poder apenas usar o produto como ele deveria ser usado - assistentes e tudo.

Por que o tipo de elemento de extensão de comportamento do WCF personalizado não está sendo encontrado?

Atualizações / esclarecimentos:

Ele funciona em tempo de execução, mas não no tempo de design.O assembly do Framework está na pasta bin do projeto da Web quando tento adicionar o serviço.Embora eu possa adicionar serviços manualmente ("sem configuração"), preciso que o modelo de item pronto para uso funcione - esse é o objetivo da pergunta.Esse problema está sendo visto no Visual Studio 2008.No VS 2010, isso parece estar resolvido.

Eu arquivei este problema no Microsoft Connect e você precisa colocar seu elemento de configuração personalizado no GAC ou colocá-lo na pasta IDE. Eles não vão consertar isso, pelo menos por enquanto. Eu publiquei a solução alternativa que eles forneceram como a "resposta" a essa pergunta.

questionAnswers(10)

yourAnswerToTheQuestion