System. Net .Http отсутствует сборка,. NET 4.7.2 и SharePoint CSOM - PullRequest
0 голосов
/ 05 мая 2020

В настоящее время я столкнулся с проблемой со сборкой « System. Net .Http », которая вызывает у меня настоящую головную боль.

Прежде чем продолжить, я часами искал Интернет читает и пробует решения, упомянутые в нескольких сообщениях, например следующие:

Очевидно, мне чего-то не хватает, потому что я не могу решить эту проблему.

По сути, у меня есть Решение, состоящее из нескольких проектов, все нацеленные на . NET Framework 4.7. 2 * 10 43 *. Одно из них - это простое консольное приложение, а другие - проект библиотеки классов. Один из них содержит ссылки на SharePoint CSOM и Office Dev PnP .

Однако каждый раз, когда нажимается следующая строка ...

context.ExecuteQuery();

... Я получаю следующую ошибку:

Exception thrown: 'System.IO.FileNotFoundException' in mscorlib.dll
Message "Could not load file or assembly 'System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified."

Трассировка стека выглядит так:

at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
at System.ServiceModel.Security.IWSTrustContract.Issue(Message message)
at System.ServiceModel.Security.WSTrustChannel.Issue(RequestSecurityToken rst, RequestSecurityTokenResponse& rstr)
at System.ServiceModel.Security.WSTrustChannel.Issue(RequestSecurityToken rst)
at OfficeDevPnP.Core.IdentityModel.TokenProviders.ADFS.UsernameMixed.RequestToken(String userName, String passWord, Uri userNameMixed, String relyingPartyIdentifier)
at OfficeDevPnP.Core.IdentityModel.TokenProviders.ADFS.UsernameMixed.GetFedAuthCookie(String siteUrl, String userName, String password, Uri userNameMixed, String relyingPartyIdentifier, Int32 logonTokenCacheExpirationWindow)
at OfficeDevPnP.Core.AuthenticationManager.<>c__DisplayClass42_0.<GetADFSUserNameMixedAuthenticatedContext>b__0(Object oSender, WebRequestEventArgs webRequestEventArgs)
at Microsoft.SharePoint.Client.ClientRuntimeContext.OnExecutingWebRequest(WebRequestEventArgs args)
at Microsoft.SharePoint.Client.ClientContext.GetWebRequestExecutor()
at Microsoft.SharePoint.Client.ClientContext.GetFormDigestInfoPrivate()
at Microsoft.SharePoint.Client.ClientContext.EnsureFormDigest()
at Microsoft.SharePoint.Client.ClientContext.ExecuteQuery()
at SP19ProvisioningAppDomain.Repository.WebRepository.ProvisionWeb(String template) in ... line 105

Я установил Microsoft.SharePoint.Client , OfficeDevPnP.Core и SharePointPnPCore2019 с использованием NuGet .

Сначала была только ссылка на « System. Net .Http"в файле" packages.config". Поэтому я попытался сделать в файле « app.config » следующее:

// 1
<assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.1.1.3" />

// 2
<assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0" />

// 3
<assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.0.0.0" />

// 4
<assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />

В файле « .csproj » также были следующие строки:

<Reference Include="System.Net" />
<Reference Include="System.Net.Http, Version=4.1.1.3, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
    <HintPath>..\packages\System.Net.Http.4.3.4\lib\net46\System.Net.Http.dll</HintPath>
    <Private>True</Private>
    <Private>True</Private>
</Reference>

Я попытался поиграть с ними, но без особого успеха.

Я также попытался удалить " System. Net. http"через Package Manager и добавить его через" References / Framework", но это тоже не сработало, потому что я просто не могу установить флажок, и при удалении пакета возникает ошибки зависимости. Я удалил папки « bin » и « packages », удалил и переустановил пакеты, борющиеся с ошибками зависимостей, очистил NuGet кеш, перезапустил Visual Studio тысячу раз, полностью испортил мое Решение, сделал много « NuGet restore », чтобы вернуться туда, где я начал.

Честно говоря, я никогда раньше не сталкивался с этой ошибкой, и я немного запутался. Я не могу понять, что мне не хватает. Могу добавить, что я использую Visual Studio Professional 2019, 16.5.4 .

Есть ли у кого-нибудь идея или может помочь мне в этом? Мы были бы очень признательны.

С уважением,

ИЗМЕНИТЬ 1

После ответа Раджу Джозефа я попробовал следующее:

  • Удалить все NuGet пакеты для проекта
  • Удалите папки « bin » и « obj »
  • Очистить " app.config " и " packages.files "
  • Очистить " csproj " файл
  • Требуется копия DLL в другую папку и добавить их вручную в качестве ссылок

К сожалению, это не сработало лучше.

Итак, я снова все очистил и переустановил NuGet пакеты . Я заметил, что в разделе « Ссылки » путь к « System. Net .Http » нацелен на мои локальные « Program Files », в то время как у меня следующие строки в моем файле « csproj »:

<Reference Include="System.Net.Http, Version=4.1.1.3, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
  <HintPath>..\packages\System.Net.Http.4.3.4\lib\net46\System.Net.Http.dll</HintPath>
  <Private>True</Private>
  <Private>True</Private>
</Reference> 

У меня есть еще один «старый» проект, ориентированный на . NET Framework 4.6.1 с почти те же зависимости и в этом проекте путь, заданный для « System. Net .Http », нацелен на папку « packages » моего проекта.

В моем текущем проекте каждый раз, когда я пытаюсь изменить путь ссылки для « System. Net .Http » и выбрать DLL из моего каталога « packages », он устанавливает путь к « Program Files ».

Я также пытался собрать и запустить проект на другом компьютере с тем же результатом.

Я запутался .. .

РЕДАКТИРОВАТЬ 2

Я решил сделать копию всего своего Решения, затем очистил все проекты и сделал их целевыми . NET Framework 4.6 .1 . На данный момент кажется, что я избавился от этой ошибки. У кого-то есть объяснение?

РЕШЕНИЕ - ВРЕМЕННОЕ РЕШЕНИЕ

После нескольких тестов я подтверждаю, что возвращаясь к . NET Framework 4.6.1 для всего Решение вроде работает. Все мои проекты компилируются, модульные тесты работают, и я могу использовать SharePoint 2019 CSOM и SharePoint PnP Core в моем коде без каких-либо ошибок.

Это может быть не хорошее решение, но в моем случае это приемлемо.

Ответы [ 2 ]

0 голосов
/ 07 мая 2020

Решение / обходной путь состоял в том, чтобы go вернуться к . NET Framework 4.6.1 . Для получения дополнительной информации см. Исходный вопрос.

0 голосов
/ 05 мая 2020

Посмотрите на это репозиторий github . Несколько лет назад мне приходилось работать с SharePoint CSOM и. NET Core, и я столкнулся с аналогичными проблемами. Обратите внимание, что в коде используется. NET Core, а не. NET Framework. Надеюсь, это поможет.

...