Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
 VS2015 + Telerik Testing Framework. Reference could not be resolved  [new]
S_A_V_e
Member

Откуда:
Сообщений: 176
Здравствуйте.

Возникла вот какая проблема:

Изначально: Win 10 x64 + Visual Studio 2015 и проект под FW 4.0 (не ClientProfile). Проект билдится без проблем.

Далее: установил Telerik Testing Framework (TTF) на машину.


Результат: Проект перестал собираться со следующими ошибками (warnings):

автор
C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1820,5): warning MSB3275: The primary reference "D:\Projects\Wpf\MS.Data.dll" could not be resolved because it has an indirect dependency on the assembly "Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed" which was built against the ".NETFramework,Version=v4.5" framework. This is a higher version than the currently targeted framework ".NETFramework,Version=v4.0".



Все сообщения из одного и того же проекта (MS.Wpf)

Если удалить TTF - билд снова идёт нормально.


Что пробовал делать:


1. Проверил что для всех проектов вставлен target framework 4.0 (не ClientProfile)

2. Пробовал указать для ссылок на Newtonsoft.Json в MS.Wpf.csproj и MS.Data.csproj тэг SpecificVersion (взял тут):

<Reference Include="Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
      <HintPath>..\..\3RDP\NuGetPackages\Newtonsoft.Json.9.0.1\lib\net40\Newtonsoft.Json.dll</HintPath>
	 <SpecificVersion>True</SpecificVersion>
    </Reference>



3. Посмотрел полученную библиотеку MS.Data.dll в ildasm. Там ссылка на Newtonsoft.Json 9.0.0.0 (т.е. как и ожидалось)

4. Проверил что в солюшене ни один проект не ссылается на Newtonsoft.Json 10.0.0.0

Нашел совет что если перевести проект на FW 4.5 и должно заработать. Но проект большой и перевод на 4.5 сейчас не возможен.


Подскажите пожалуйста как решить данную проблему ? Нужно восстановить билд с установленным TTF и target Framework 4.0.

Заранее спасибо за ответы и помощь.
14 фев 19, 16:18    [21809650]     Ответить | Цитировать Сообщить модератору
 Re: VS2015 + Telerik Testing Framework. Reference could not be resolved  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 2562
S_A_V_e
Здравствуйте.

Возникла вот какая проблема:

Изначально: Win 10 x64 + Visual Studio 2015 и проект под FW 4.0 (не ClientProfile). Проект билдится без проблем.

Далее: установил Telerik Testing Framework (TTF) на машину.


Результат: Проект перестал собираться со следующими ошибками (warnings):

автор
C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1820,5): warning MSB3275: The primary reference "D:\Projects\Wpf\MS.Data.dll" could not be resolved because it has an indirect dependency on the assembly "Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed" which was built against the ".NETFramework,Version=v4.5" framework. This is a higher version than the currently targeted framework ".NETFramework,Version=v4.0".



Все сообщения из одного и того же проекта (MS.Wpf)

Если удалить TTF - билд снова идёт нормально.


Что пробовал делать:


1. Проверил что для всех проектов вставлен target framework 4.0 (не ClientProfile)

2. Пробовал указать для ссылок на Newtonsoft.Json в MS.Wpf.csproj и MS.Data.csproj тэг SpecificVersion (взял тут):

<Reference Include="Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
      <HintPath>..\..\3RDP\NuGetPackages\Newtonsoft.Json.9.0.1\lib\net40\Newtonsoft.Json.dll</HintPath>
	 <SpecificVersion>True</SpecificVersion>
    </Reference>



3. Посмотрел полученную библиотеку MS.Data.dll в ildasm. Там ссылка на Newtonsoft.Json 9.0.0.0 (т.е. как и ожидалось)

4. Проверил что в солюшене ни один проект не ссылается на Newtonsoft.Json 10.0.0.0

Нашел совет что если перевести проект на FW 4.5 и должно заработать. Но проект большой и перевод на 4.5 сейчас не возможен.


Подскажите пожалуйста как решить данную проблему ? Нужно восстановить билд с установленным TTF и target Framework 4.0.

Заранее спасибо за ответы и помощь.


вы проколбасились, но не прочитали сообщение об ошибке:
because it has an indirect dependency on the assembly "Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed" which was built against the ".NETFramework,Version=v4.5" framework. This is a higher version than the currently targeted framework ".NETFramework,Version=v4.0

Не уверен, но попробуйте в конфиге редиректнуть для ньютона версии, может и пройдет
14 фев 19, 16:36    [21809673]     Ответить | Цитировать Сообщить модератору
 Re: VS2015 + Telerik Testing Framework. Reference could not be resolved  [new]
S_A_V_e
Member

Откуда:
Сообщений: 176
Пробовал делать редирект. В проекты MS.Data и MS.Wpf добавлял App.config c таким содержимым:

<configuration>
	<runtime>
		<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
			<dependentAssembly>

				<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />

				<bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="9.0.0.0" />

			</dependentAssembly>
		</assemblyBinding>
	</runtime>
</configuration>



То же самое пробовал делать в App.config приложения MS.App (главное приложение которое ссылается на MS.Data и MS.Wpf).

Так же добавил напрямую ссылку на Newtonsoft.Json в MS.App (что бы в Bin точно шла нужная библиотека).

Пробовал использовать <publisherPolicy apply="no" /> вместо <bindingRedirect…/>

Затем добавил в файлы *.csproj всех проектов такое:
<AutoGenerateBindingRedirects>false</AutoGenerateBindingRedirects>


Проверил что в GAC установлена правильная библиотека:

C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools>gacutil /l Newtonsoft.Json
Microsoft (R) .NET Global Assembly Cache Utility.  Version 4.0.30319.0
Copyright (c) Microsoft Corporation.  All rights reserved.

The Global Assembly Cache contains the following assemblies:
  Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL

Number of items = 1



Саму библиотеку Newtonsoft.Json версии 10.0.0.0 нашел только в фолдере установки самого TTF. Не понятно как MSBuild вообще может о ней знать.

Но результат всегда один - Build FAILED.

Что ещё можно сделать ?
15 фев 19, 11:58    [21810427]     Ответить | Цитировать Сообщить модератору
 Re: VS2015 + Telerik Testing Framework. Reference could not be resolved  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38435
S_A_V_e
Проект перестал собираться со следующими ошибками (warnings):
разве сборка на варнинг останавливается?
2. Он платный. Напиши им.
15 фев 19, 13:06    [21810512]     Ответить | Цитировать Сообщить модератору
 Re: VS2015 + Telerik Testing Framework. Reference could not be resolved  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38435
AFAIK у них видел утилиту проверяющую все сборки на компе и правильность версий.
3. Потом не понял, что за TTF?
Зачем его ставить, если перестало работать в продакшене?
Может он только на 4.5 пашет?
15 фев 19, 13:13    [21810531]     Ответить | Цитировать Сообщить модератору
 Re: VS2015 + Telerik Testing Framework. Reference could not be resolved  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38435
Я просто подсовывал все dll новой версии вместо старых)
15 фев 19, 13:14    [21810536]     Ответить | Цитировать Сообщить модератору
 Re: VS2015 + Telerik Testing Framework. Reference could not be resolved  [new]
S_A_V_e
Member

Откуда:
Сообщений: 176
Сборка на варнингах не останавливается. Просто билд не может найти правильный референс (выдаёт warning) -> не может собрать сборку MS.Wpf и уже тут выдаёт ошибку. Но источник проблемы сборка Newtonsoft.Json которая указана в warning.
TTF - Telerik testing Framework - для автоматизации тестов. Выбрать другой не могу. Платная в нём Test Studio (её не использую). Само ядро - бесплатное.


Обнаружил вот что:

Включил Detailed build verbosity и увидел что MSBuild ищет сборки в том числе и в фолдере установки TTF (C:\Program Files (x86)\Progress\Test Studio\Bin) хотя к самой сборке и не обращается. Там лежит сборка Newtonsoft.Json версии 10.0.0.0. Я переименовал файл в Newtonsoft.Json1.sdf и билд заработал. Всё равно пишет сообщение о конфликте сборок, но билдит без ошибок.

Как сделать что бы билд не лез в фолдер установки TTF ? Есть ли ещё варианты решения проблемы ? Решение с переименованием файла не подходит т.к. неизвестно как это отразится на самом TTF.
15 фев 19, 17:12    [21811021]     Ответить | Цитировать Сообщить модератору
 Re: VS2015 + Telerik Testing Framework. Reference could not be resolved  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38435
S_A_V_e
Как сделать что бы билд не лез в фолдер установки TTF ?
если тестирование, то я понимаю так что библиотеки должны быть общие. Иначе можно и на разные машины поставить)
IMHO
Не замыкайся на тестировании ПО только одного вендора.
Удачи!
15 фев 19, 17:25    [21811047]     Ответить | Цитировать Сообщить модератору
 Re: VS2015 + Telerik Testing Framework. Reference could not be resolved  [new]
S_A_V_e
Member

Откуда:
Сообщений: 176
Тема ещё актуальна.
После деинсталляции TTF увидел что в detailed build log больше нет путей к папке его установки. Подозреваю что установка TTF может прописать куда то путь таким образом что MSBuild начинает искать библиотеки по этому пути. Откуда MSBuild берёт пути для поиска сборок ?
18 фев 19, 16:49    [21813373]     Ответить | Цитировать Сообщить модератору
 Re: VS2015 + Telerik Testing Framework. Reference could not be resolved  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38435
S_A_V_e
Откуда MSBuild берёт пути для поиска сборок ?

- проект, реестр, path, GAC
gacutil /u "имяи версия"
18 фев 19, 17:37    [21813472]     Ответить | Цитировать Сообщить модератору
 Re: VS2015 + Telerik Testing Framework. Reference could not be resolved  [new]
S_A_V_e
Member

Откуда:
Сообщений: 176
Оставлю тут один из способов решения вопроса.

Установщик дописывает в реестр фолдеры в которых будет делаться поиск сборок:

Вот по этому пути в реестре :
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\AssemblyFolders\Testing Framework 2019.1


Оказался прописан путь:
C:\Program Files (x86)\Progress\Test Studio\Bin\


Изменил путь на не существующий:
C:\Program Files (x86)\Progress\Test Studio\Bin1\

Т.к. по этому пути лежит более новая библиотека , то в процессе выбора библиотеки отбиралась именно она.
Когда MSBuild перестал видеть к ней путь приложение стало собираться.
13 мар 19, 16:28    [21831514]     Ответить | Цитировать Сообщить модератору
Все форумы / WinForms, .Net Framework Ответить