Svcutil.exe для .NET 4.0?
Я пытался использовать svcutil.exe для создания прокси-классов для службы, но когда я использую параметр /reference
для ссылки на сборку, созданную для .NET 4.0, я получаю сообщение об ошибке.
Не удалось загрузить файл или сборку [...] или одну из его зависимостей. Эта сборка построена с помощью среды выполнения, более новой, чем текущая загруженная среда выполнения, и не может быть загружена.
Так кажется, что я использую старую версию svcutil.exe. Я использую один в "C:\Program Files\Microsoft SDKs\Windows\v7.0A
, который был последним, который я мог найти. Есть ли более поздняя версия где-то, что я должен использовать?
Ответы
Ответ 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 как к ссылкам вообще.
Ответ 6
Отвечая на мой вопрос. Новая версия svcutil
, вероятно, будет поставляться с v7.1 в Windows SDK, который выпущен в середине июня.
Ответ 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