Почему мой пользовательский тип элемента расширения поведения WCF не найден?

Мне действительно нравится этот оператор, но читатель должен быть принят во внимание.

Вы всегда должны балансировать компактность компакт-диска с затраченным временем на чтение и тем самым иметь довольно серьезные недостатки .

Прежде всего, есть случай Оригинального Аскера. Он просто потратил час, разместив об этом и прочитав ответы. Как долго он должен был писать автору каждый?: Как if, то на протяжении всей его жизни. Не час, чтобы быть уверенным.

Во-вторых, на языках C-типа у вас появляется привычка просто знать, что условные обозначения - это первое, что есть в строке. Я заметил это, когда я использовал Ruby и натолкнулся на строки вроде:

callMethodWhatever(Long + Expression + with + syntax) if conditional

Если бы я был долгое время пользователем Ruby, у меня, вероятно, не было бы проблем с этой строкой, а из C, когда вы видите «callMethodWhatever» в качестве первой вещи в строке, вы ожидаете, что она будет выполнена. «?» Менее загадочный, но все еще достаточно необычный, чтобы отбросить читателя.

Преимущество, однако, - это действительно крутое чувство в вашем животике, когда вы можете написать 3-строчный оператор if в пространство 1 строки. Не могу отрицать этого :) Но, честно говоря, не обязательно более читаемый 90% людей там просто из-за своей «редкости».

Когда это действительно назначение на основе логического значения, и значения у меня нет с ним, но его можно легко злоупотреблять.

47
задан abatishchev 29 December 2012 в 08:10
поделиться

5 ответов

На обходное решение , который Microsoft отправила на выпуск Подключения, который я зарегистрировал для этого, это - известная проблема и не будет никакого решения для него, по крайней мере, в текущем выпуске:

причина отказа добавить новый сервисный объект: При добавлении нового объекта и обновлении конфигурационного файла, система попытается загрузить конфигурационный файл, таким образом, это попытается искать и загрузить блок cusom расширения в этом файле конфигурации. Только в случаях, что блок является GACed или расположен в том же пути как по сравнению с exe (Программа Visual Studio Files\Microsoft 9.0\Common7\IDE), система может найти его. Иначе ошибочное диалоговое окно откроется и "добавьте, что новый объект" перестанет работать.

я понимаю Ваши болевые точки. К сожалению, мы не можем внести это изменение в текущем выпуске. Мы исследуем его в более поздних выпусках и попытаемся предоставить лучшее решение тогда, такое как обеспечение диалогового окна обзора, чтобы позволить клиентам определить путь или лучшее сообщение об ошибке, чтобы указать, что некоторая работа вокруг решения, и т.д.

Может Вы пробовать работу вокруг на текущем этапе: GAC Ваш пользовательский дополнительный блок или копия это к "Программе Visual Studio Files\Microsoft 9.0\Common7\IDE"?

Мы обеспечим readme для помощи другим клиентам, которые могут столкнуться с той же проблемой.

, К сожалению, кажется, что я являюсь неудачливым на этом.

21
ответ дан Travis Illig 26 November 2019 в 19:55
поделиться

Я попробовал это новым проектом только, чтобы удостовериться, что это не было Вашим определенным проектом/конфигурацией и имело ту же самую проблему.

Используя журналы сплава, кажется, что система ищет расширения поведения ТОЛЬКО в каталоге IDE (C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE). Копирование блока к этому каталогу на шаге постсборки работы, но ужасно.

4
ответ дан Derek Atlansky 26 November 2019 в 19:55
поделиться

У Вас есть копия Framework.dll с Вашим пользовательским поведением в каталоге bin Вашего веб-проекта? Если не, который является, вероятно, проблемой. Visual Studio ищет реализацию поведения. Так как это перечислено в Вашей конфигурации, это не думает для взгляда в других проектах; это ожидает находить блок в мусорном ведре.

В зависимости от того, как Ваш проект является установкой, он может быть в состоянии работать в отладке без этого блока, помещаемого в мусорное ведро, хотя VS обычно создает его и помещает его там. Но снова, это зависит от того, как вещами является установка.

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

2
ответ дан James Bender 26 November 2019 в 19:55
поделиться

Помещение блока в GAC, вероятно, помогло бы, но я ценю, это не ответ, который Вы ищете. Не уверенный, где еще VS будет искать блоки кроме GAC и каталога, содержащего devenv.exe.

1
ответ дан Joe 26 November 2019 в 19:55
поделиться

К сведению всех, кто столкнулся с этим в наши дни, возможным решением является ПОЛНАЯ квалификация вашей сборки в вашем app.config/web.config. НАПРИМЕР если у вас есть

<system.serviceModel>
    <extensions>
        <behaviorExtensions>
            <add name="clientCredential" type="Client.ClientCredentialElement, Client" />
        </behaviorExtensions>
    </extensions>

попробуйте - заменяя значения по мере необходимости

<system.serviceModel>
    <extensions>
        <behaviorExtensions>
            <add name="clientCredential" type="Client.ClientCredentialElement, Client, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
        </behaviorExtensions>
    </extensions>

это конкретное решение сработало для меня.

6
ответ дан 26 November 2019 в 19:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: