Member 12652465 Ответов: 2

Возникли проблемы со сборкой


Здравствуйте Друзья,

В моей системе я установил несколько пакетов NuGet, когда я попытался скомпилировать, я получил сообщение об ошибке, как показано ниже:

- Тип "задача" существует в обеих системах.Продевать нитку, версия=1.0.2856.102, культуры=нейтральный, значения PublicKeyToken=31bf3856ad364e35 " и "mscorlib, версия=4.0.0.0, культуры=нейтральный, значения PublicKeyToken=b77a5c561934e089'


поэтому я удалил "систему.Threading" я установил через Nuget, то новое сообщение об ошибке выглядит следующим образом:

CS0012: система типа'.Нарезание резьбы.Задачи.Задача "1" определяется в сборке, на которую нет ссылок. Вы должны добавить ссылку на систему сборки.Потоковая передача, версия=1.0.2856.102, культура=нейтральная, PublicKeyToken=31bf3856ad364e35'.

До этого я работал на фреймворке 4.5, поэтому я обновился до 4.5.1 и изменил свой проект на 4.5.1, но ошибка все еще такая же, как и вторая ошибка.

Итак, как же мне решить эту проблему?

Ниже приведен код, над которым я работаю

var client = new HttpClient();
   var values = new List<KeyValuePair<string, string>>();
   values.Add(new KeyValuePair<string, string>("task", task));
   values.Add(new KeyValuePair<string, string>("merchant", merchant_id));
   values.Add(new KeyValuePair<string, string>("ref", id));
   // include other fields
   var content = new FormUrlEncodedContent(values);
                    System.Threading.Tasks.Task<httpresponsemessage> t = client.PostAsync("https://myepay.com/api/", content);
                    t.Wait();
                    var response = t.Result;


Что я уже пробовал:

Я обновился до версии 4.5.1 и изменил свой проект на 4.5.1

Я отредактировал файл web.config из:

<system.web>
    <compilation debug="true" targetFramework="4.5.1"/>


К:

<system.web>
    <compilation debug="true" targetFramework="4.5.1">
      <assemblies>
        <add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>



ОБНОВЛЕННЫЙ

Я попытался дальше решить эту проблему, я попробовал перенаправление ask предложил.ниже то, что я сделал:

Бывший
<runtime>
    <assemblyBinding appliesTo="v2.0.50727" xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0" />
      </dependentAssembly></runtime>


Последний
<runtime>
    <assemblyBinding appliesTo="v2.0.50727" xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0" />
      </dependentAssembly>
    <dependentAssembly>
        <assemblyIdentity name="System.Threading" publicKeyToken="31bf3856ad364e35" culture="neutral" />
             <bindingRedirect oldVersion="4.0.30319.18402" newVersion="1.0.2856.102" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>


тем не менее он дает ту же ошибку, что и:
CS0012: The type 'System.Threading.Tasks.Task`1' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Threading, Version=1.0.2856.102, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.


И снова я установил NuGet "NuGet Package Management", и он пришел со многими зависимостями. может быть, это причина или что еще я сделал не так?

lw@zi

Похоже, что ваш пакет nuget ссылается на другую версию фреймворка. Tasks<> является частью mrcorlib, поэтому вам не нужно ссылаться на него явно.

Member 12652465

Пожалуйста, можете ли вы привести пример с образцом кода

lw@zi

Итак, вы получаете эту ошибку даже после удаления пакета Nuget? Какова целевая структура вашего проекта?

F-ES Sitecore

Похоже, что пакет nuget предназначен для более старой версии файла .net. Может быть, посмотреть, есть ли более современный вариант. Как уже упоминалось, вам не нужно никакой ссылки на систему.Таким образом, если что-то добавляет его, то это для более старой версии фреймворка.

2 Ответов

Рейтинг:
1

johannesnestler

Я думаю, что это и есть "проблема перенаправления" . здесь[^] об этом:

У меня было что - то похожее на то, что вы описали-так что я почти уверен, что это решение. Это неприятно, потому что ваш app.config из времени разработки проектов будет перезаписан во время выполнения с перенаправлениями, которые трудно обнаружить - так что взгляните на свой RUNTIME! app.config...


Member 12652465

Я сделал это, но все равно получаю ту же ошибку.
ниже приведена часть моего web.config, здесь что-то не так?

<время выполнения>
&ЛТ;assemblyBinding при="В2.0.50727" атрибутов xmlns="урна:схим-Майкрософт-com:АСМ.В1"и GT;
<зависимая сборка>
&ЛТ;assemblyIdentity наименование="Newtonsoft.В JSON текста" PublicKeyToken="30ad4fe6b2a6aeed" культуры="нейтральный" /&ГТ;
&ЛТ;перенаправления привязки старую версию="0.0.0.0-9.0.0.0" новаяверсия="9.0.0.0" /&ГТ;


<autogeneratebindingredirects>true

Member 12652465

обновление:
<время выполнения>
&ЛТ;assemblyBinding при="В2.0.50727" атрибутов xmlns="урна:схим-Майкрософт-com:АСМ.В1"и GT;
<зависимая сборка>
&ЛТ;assemblyIdentity наименование="Newtonsoft.В JSON текста" PublicKeyToken="30ad4fe6b2a6aeed" культуры="нейтральный" /&ГТ;
&ЛТ;перенаправления привязки старую версию="0.0.0.0-9.0.0.0" новаяверсия="9.0.0.0" /&ГТ;


<autogeneratebindingredirects>true

johannesnestler

удалите перенаправление привязки из вашего файла app.config и установите флаг autogeneratebindings-flag в файле проекта на false (как описано в MSDN)

Member 12652465

Я сделал все так, как ты сказал, и все равно получил ответ.
CS0012: система типа'.Нарезание резьбы.Задачи.Задача "1" определяется в сборке, на которую нет ссылок. Вы должны добавить ссылку на систему сборки.Потоковая передача, версия=1.0.2856.102, культура=нейтральная, PublicKeyToken=31bf3856ad364e35'.

Рейтинг:
1

Member 13964845

На данный момент UWP и Xamarin, похоже, не поддерживают эту библиотеку.

У меня были те же проблемы, и после проверки я обнаружил, что пакеты, которые используют систему.Нарезание резьбы.Библиотека потоков на самом деле не может работать, потому что эта зависимость терпит неудачу(даже если Microsoft говорит, что пакет идеально совместим).

Вот 2 статьи на эту тему

https://neosmart.net/blog/2017/system-threading-thread-universal-windows-platform-and-the-fragmentation-of-net-standard/

https://github.com/dotnet/corefx/issues/2576