WCF, warning'и при сборке x64
От: Temnikov Россия  
Дата: 19.09.16 14:30
Оценка:
Приветствую.
Есть вопросик, простецкий, легко воспроизводится.
Вырожденный случай:
Делаем новый проект в VS2012 типа WCF Service Library.
Генерится шаблонный проект с одним интерфейсом и описанием.
Собираем Release — Any CPU платформа — все собирается.
В Configuration Manager добавляем платформу x64, настраиваем чтоб в x64 платформе собиралась 64 битная сборка.
Собираем, и получаем пару warning'ов:

1>  ConfigWS -> c:\users\temnikov\documents\visual studio 2012\Projects\ConfigWS\ConfigWS\bin\x64\Release\ConfigWS.dll
1>c:\users\temnikov\documents\visual studio 2012\Projects\ConfigWS\ConfigWS\App.config(14,16,-1,-1): warning : WCF configuration validation warning: The 'name' attribute is invalid - The value 'ConfigWS.Service1' is invalid according to its datatype 'serviceNameType'.
1>c:\users\temnikov\documents\visual studio 2012\Projects\ConfigWS\ConfigWS\App.config(22,57,-1,-1): warning : WCF configuration validation warning: The 'contract' attribute is invalid - The value 'ConfigWS.IService1' is invalid according to its datatype 'serviceContractType'.


Что это? В гугле был.
Re: WCF, warning'и при сборке x64
От: Михаил Романов Удмуртия https://mihailromanov.wordpress.com/
Дата: 21.09.16 12:24
Оценка: 2 (1)
Здравствуйте, Temnikov, Вы писали:

T>Что это? В гугле был.

Во-первых, спасибо за вопрос — стало интересно и в процессе воспроизведения выяснил, что MS, что-то успела сломать за последний год в механизме отладки MSBuild скриптов (отладчик подключается, но файл скрипта не подхватывается и точки останова в нем не видит...). Еще на 2013 студии я вполне всё отлаживал, а тут выясняется, что начиная с 2013.3 всё сломалось...

Во-вторых, удалось выяснить следующее: Для проверки App.config вызывается target DoConfigValidation, которая, в свою очередь вызывает задачу ConfigValidationTask. Собственна эта задача и генерирует 2 предупреждения, которые вы видите в сборке для x64.
Собственно, вот 2 фрагмента логов MSBuild:
  Для x86
Using "ConfigValidationTask" task from assembly "Microsoft.VisualStudio.ServiceModel.Core, Version=14.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35".
Task "ConfigValidationTask" (TaskId:36)
  Task Parameter:OutputAssembly=D:\ForDemo\WcfServiceLibrary1\WcfServiceLibrary1\bin\Release\WcfServiceLibrary1.dll (TaskId:36)
  Task Parameter:ConfigFilePath=App.config (TaskId:36)
  Task Parameter:
      ReferenceAssemblies=
          C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\Microsoft.CSharp.dll
          C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\mscorlib.dll
          C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.Core.dll
          C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.Data.dll
          C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.dll
          C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.Runtime.Serialization.dll
          C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.ServiceModel.dll
          C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.Xml.dll
          C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.Xml.Linq.dll (TaskId:36)
  Task Parameter:ValidationRecordTempFilePath=obj\Release\\WcfConfigValidationData.tmp (TaskId:36)
Done executing task "ConfigValidationTask". (TaskId:36)

  Для x64
Using "ConfigValidationTask" task from assembly "Microsoft.VisualStudio.ServiceModel.Core, Version=14.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35".
Task "ConfigValidationTask" (TaskId:36)
  Task Parameter:OutputAssembly=D:\ForDemo\WcfServiceLibrary1\WcfServiceLibrary1\bin\x64\Release\WcfServiceLibrary1.dll (TaskId:36)
  Task Parameter:ConfigFilePath=App.config (TaskId:36)
  Task Parameter:
      ReferenceAssemblies=
          C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\Microsoft.CSharp.dll
          C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\mscorlib.dll
          C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.Core.dll
          C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.Data.dll
          C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.dll
          C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.Runtime.Serialization.dll
          C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.ServiceModel.dll
          C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.Xml.dll
          C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.Xml.Linq.dll (TaskId:36)
  Task Parameter:ValidationRecordTempFilePath=obj\x64\Release\\WcfConfigValidationData.tmp (TaskId:36)
App.config(14,16,-1,-1): warning : WCF configuration validation warning: The 'name' attribute is invalid - The value 'WcfServiceLibrary1.Service1' is invalid according to its datatype 'serviceNameType'. [D:\ForDemo\WcfServiceLibrary1\WcfServiceLibrary1\WcfServiceLibrary1.csproj]
App.config(22,57,-1,-1): warning : WCF configuration validation warning: The 'contract' attribute is invalid - The value 'WcfServiceLibrary1.IService1' is invalid according to its datatype 'serviceContractType'. [D:\ForDemo\WcfServiceLibrary1\WcfServiceLibrary1\WcfServiceLibrary1.csproj]
 Done executing task "ConfigValidationTask". (TaskId:36)

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

Наскоро посмотрев код этой задачи, я предположил, что это проблема загрузке сборок (они там пробегаются по сборкам проекта + зависимые + системные WCF и получают список сервисов и контрактов, которые доступны в проекте. Исходя из этого списка и делается проверка), но вроде как они загружают сборки ReflectionOnlyLoadFrom(), так что даже не знаю...

Я бы предложил просто игнорировать эти сообщения. Хотя написать в MS, наверное, всё же стоит (если есть время и желание).
Re[2]: WCF, warning'и при сборке x64
От: Temnikov Россия  
Дата: 21.09.16 15:29
Оценка:
МР>Во-первых, спасибо за вопрос — стало интересно и в процессе воспроизведения выяснил, что MS, что-то успела сломать за последний год в механизме отладки MSBuild скриптов (отладчик подключается, но файл скрипта не подхватывается и точки останова в нем не видит...). Еще на 2013 студии я вполне всё отлаживал, а тут выясняется, что начиная с 2013.3 всё сломалось...
Я проверял на VS 2012.4
Из того что еще нашел, если сменить фреймворк на 4.0 то всё работает без warning'ов.

МР>Наскоро посмотрев код этой задачи, я предположил, что это проблема загрузке сборок (они там пробегаются по сборкам проекта + зависимые + системные WCF и получают список сервисов и контрактов, которые доступны в проекте. Исходя из этого списка и делается проверка), но вроде как они загружают сборки ReflectionOnlyLoadFrom(), так что даже не знаю...

Автоматический ввод сервисов и контрактов отлично подгружает правильные имена из проекта. Только вот warning'и генерит при сборке.

МР>Я бы предложил просто игнорировать эти сообщения. Хотя написать в MS, наверное, всё же стоит (если есть время и желание).

Ни разу не писал в MS ). Могу написать им, только знать бы куда ).
По самому варнингу — забил, всё работает. Просто не люблю плодить warning'и, иначе они портят output забивая своими сообщениями в которых может потеряться что-то важное.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.