Подтвердить что ты не робот

Svcutil.exe для .NET 4.0?

Я пытался использовать svcutil.exe для создания прокси-классов для службы, но когда я использую параметр /reference для ссылки на сборку, созданную для .NET 4.0, я получаю сообщение об ошибке.

Не удалось загрузить файл или сборку [...] или одну из его зависимостей. Эта сборка построена с помощью среды выполнения, более новой, чем текущая загруженная среда выполнения, и не может быть загружена.

Так кажется, что я использую старую версию svcutil.exe. Я использую один в "C:\Program Files\Microsoft SDKs\Windows\v7.0A, который был последним, который я мог найти. Есть ли более поздняя версия где-то, что я должен использовать?

4b9b3361

Ответ 1

У меня была такая же проблема. Если ваш проект настроен на использование платформы .NET 4.0, вы должны выбрать правильную версию SvcUtil.exe или вызвать ошибку: "Не удалось загрузить..."

  • Если вы посмотрите в "Microsoft SDKs\Windows\v6.0A\Bin", вы увидите, что версия этого exe "3.0.4506.2152".
  • Версия SvcUtil.exe в "Microsoft SDKs\Windows\v7.0A\Bin" - это точно то же самое, поэтому она также меня бросила на цикл.

Однако существует еще одна версия SvcUtil.exe, расположенная в "Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools", которая представляет собой версию "4.0.30319.1", и если вы ее используете, все должен работать.

Ответ 2

Последняя версия SDK для .Net 4.0 доступна в

http://msdn.microsoft.com/en-us/windows/bb980924.aspx

svcutil.exe, который находится в v7.1/bin, имеет версию 3.0.4506.2152.

svcutil.exe, который находится в v7.1/bin/NETFX 4.0 Tools, имеет версию 4.0.30319.1.

Ответ 3

В соответствии с этой ссылкой для .Net 4.0 вы должны использовать ее в C:\Program Files\Microsoft SDK\Windows\v6.0\Bin.

http://msdn.microsoft.com/en-us/library/aa347733.aspx

Кажется немного странным, если тот, что находится в каталоге v7.0A, слишком стар.

Ответ 4

Почему бы не перестроить как .NET 3.5 для генерации классов? Я подозреваю, что типы, которые вы создаете для классов, не полагаются на какие-либо функции .NET 4.0. Файлы cs не будут заботиться о том, какая версия DLL была построена для того, чтобы вы могли использовать их в проекте 4.0 просто отлично.

Ответ 5

У меня такая же проблема.

Microsoft заявляет, что вы можете использовать DLL-библиотеки .Net 4 с новым SvcUtil, который поставляется с последней версией .Net(http://msdn.microsoft.com/en-us/library/aa347733.aspx), но эта версия, похоже, выше, чем вы. Он не будет обращаться к .Net 4 DLL как к ссылкам вообще.

Ответ 7

Обновление: новая версия утилиты не v7.0:

Microsoft SDK\Windows\v7.0A\Bin\NETFX 4.0 Tools

SvcUtil.exe v8.0A теперь доступен после установки Visual Studio 2012 (VS 2012)

"C:\Program Files (x86)\Microsoft SDK\Windows\v8.0A\bin\NETFX 4.0 Tools\SvcUtil.exe"

То, что вы действительно хотите, - это полное определение для превращения WSDL файла в клиентскую службу:

/n: *, MyCompany.Services.Client/out:IServiceInterface.cs ServiceDefinition.wsdl.xml

Где определение service.wsdl, очевидно, является ответом? wsdl от любой старой конечной точки мыла.

Миньоны и тролли помнят! Теперь все Async ищет и использует новую поддержку Async, созданную v8.0 из SVCUtil.exe