Когда будет mesage & ldquo; Найдено конфликты между различными версиями & hellip; & rdquo; запускаться? [Дубликат]

Что вам нужно знать:

    текст, который представляет несколько строк, также содержит непечатаемые символы между строками (мы называем их разделителями строк), как возврат каретки (CR - в строковых литералах, представленных как "\r") line line (LF - в строковых литералах, представленных как "\n")
  • , когда вы читаете данные с консоли, это позволяет пользователю вводить свой ответ, и когда он будет сделан, ему необходимо как-то подтверждают этот факт. Для этого пользователю необходимо нажать клавишу «enter» / «return» на клавиатуре. Важно то, что этот ключ, помимо обеспечения размещения пользовательских данных на стандартном входе (представленный System.in, который читается Scanner), также отправляет зависимые от ОС разделители строк (например, для Windows \r\n) после этого. Поэтому, когда вы запрашиваете у пользователя значение типа age, а пользовательские типы 42 и нажимаете enter, стандартный вход будет содержать "42\r\n".

Проблема

Scanner#nextInt (и другие методы Scanner#nextType) не позволяют сканеру потреблять эти разделители строк. Он прочитает их из System.in (как еще Сканер узнает, что больше нет цифр от пользователя, которые представляют age значение, чем перед пробелом?), Который удалит их со стандартного ввода, но он также будет кешем эти разделители строк внутри. Нам нужно помнить, что все методы Scanner всегда сканируются, начиная с кэшированного текста.

Теперь Scanner#nextLine() просто собирает и возвращает все символы , пока не найдет разделители строк (или конец потока). Но поскольку разделители строк после прочтения номера из консоли сразу обнаруживаются в кеше сканера, он возвращает пустую строку, что означает, что сканер не смог найти символ до этих разделителей строк (или конца потока). BTW nextLine также потребляет эти разделители строк.

Решение

Поэтому, когда вы хотите запросить номер, а затем для всей строки, избегая этой пустой строки в результате nextLine, либо

  • потребляет разделитель строк слева от nextInt из кеша сканеров, вызывая nextLine, или вызывая skip("\\R"), чтобы позволить Scanner пропускать часть, сопоставляемую с \R, которая представляет разделитель строк (подробнее о \R: https : //stackoverflow.com/a/31060125 )
  • вообще не используют nextInt (ни next, ни какие-либо методы nextTYPE). Вместо этого прочитайте целые строки данных по строке nextLine и номера разбора из каждой строки (при условии, что одна строка содержит только одно число) для правильного типа, например int, через Integer.parseInt.

BTW: Scanner#nextType методы могут пропускать разделители (по умолчанию все пробелы, такие как вкладки, разделители строк), в том числе кэшированные сканером, пока они не найдут следующее значение без разделителя (токен). Благодаря этому для ввода типа "42\r\n\r\n321\r\n\r\n\r\nfoobar" код

int num1 = sc.nextInt();
int num2 = sc.nextInt();
String name = sc.next();

сможет правильно назначить num1=42 num2=321 name=foobar.

279
задан BartoszKP 13 September 2015 в 20:33
поделиться

16 ответов

Запустить команду Update-Package с помощью консоли диспетчера пакетов

. Это исправит MSB3277, что он переустанавливает все пакеты и все связанные сборки, к которым они приходят, с самой высокой возможной версией. Также возможно обновить только определенный пакет. Или понизите рейтинг после обновления, если захотите, эта исправленная проблема для меня несколько раз пришла. В зависимости от того, сколько пакетов nuget у вас есть, этот процесс может занять несколько минут.

Дополнительная информация о официальных документах https://docs.microsoft.com/en-us/nuget/consume-packages / переустановка-и-обновление-пакеты

-1
ответ дан Aistis Taraskevicius 25 August 2018 в 00:20
поделиться

Я могу поддержать дальнейший ответ Рубена с помощью сравнения двух отображаемых сообщений:

enter image description here [/g3]

и сообщение:

C: \ Program Files (x86) \ MSBuild \ 12.0 \ bin \ Microsoft.Common.CurrentVersion.targets (1697,5): предупреждение MSB3277: обнаружены конфликты между различными версиями одной и той же зависимой сборки, которые невозможно было решить , Эти ссылочные конфликты перечислены в журнале сборки, когда длина журнала задана как подробное.

Итак, право Рубена - это просто неверно. Нет никаких конфликтов, просто отсутствует сборка. Это особенно скучно, когда проект является приложением ASP.NET, поскольку представления компилируются по требованию, то есть непосредственно перед отображением в первый раз. Это происходит тогда, когда становится необходимым наличие сборки. (Существует возможность предварительно скомпилировать представления вместе с остальной частью кода, но это другая история .) С другой стороны, если вы установите многословие в Diagnostic, вы получите следующий результат:

C: \ Program Files (x86) \ MSBuild \ 12.0 \ bin \ Microsoft.Common.CurrentVersion.targets (1697,5): предупреждение MSB3245: Не удалось устранить эту ссылку. Не удалось найти сборку «System.Web.Razor, Version = 3.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35, processorArchitecture = MSIL». Убедитесь, что сборка существует на диске. Если эта ссылка требуется вашим кодом, вы можете получить ошибки компиляции.

В результате все, что вам нужно сделать, это либо:

  1. Добавить ссылку на сборку вручную (найдите ее на диске, возможно, GAC, и добавьте ее как «прямую» ссылку), или
  2. Используйте пакет NuGet (если он опубликован в галерее), чтобы загрузить его и ссылаться на сборку

Подробнее о галерее NuGet здесь . Подробнее о прекомпиляции представлений ASP.NET здесь .

31
ответ дан Alexander Christov 25 August 2018 в 00:20
поделиться

Я обнаружил, что иногда пакеты nuget будут устанавливаться (что я предполагаю) .NET Core требуемые компоненты или другие элементы, которые конфликтуют с уже установленной инфраструктурой. Моим решением было открыть файл проекта (.csproj) и удалить эти ссылки. Например, System.IO, System.Threading и т. Д., Как правило, добавляются, когда Microsoft.Bcl включен через недавно установленный пакет NuGet. Нет причин для конкретных версий тех, что есть в моих проектах, поэтому я удаляю ссылки и сборки проекта. Надеюсь, что это поможет.

Вы можете выполнить поиск в файле проекта для «ссылки» и удалить конфликты. Если они включены в Систему, избавитесь от них, и сборка должна работать. Это может не отвечать на все случаи этой проблемы - я уверен, что вы знаете, что сработало для меня:)

Пример того, что я прокомментировал:

<!-- <Reference Include="System.Runtime, Version=2.6.9.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> -->
  <!-- <HintPath>$(SolutionDir)packages\Microsoft.Bcl.1.1.9\lib\net40\System.Runtime.dll</HintPath> -->
  <!-- <Private>True</Private> -->
<!-- </Reference> -->

1
ответ дан Auri Rahimzadeh 25 August 2018 в 00:20
поделиться

В соответствии с другими ответами, установите уровень ведения журнала вывода для подробного поиска и найдите там конфликты, которые расскажут вам, где искать дальше.

В моем случае он отправил меня в нескольких направлениях ищет источник ссылок, но в конце концов выяснилось, что проблема была одним из моих переносимых проектов библиотеки классов, она нацеливалась на неправильную версию и вытягивала свою собственную версию ссылок, а значит, и конфликты. Быстрая переадресация и проблема была решена.

0
ответ дан car1bo 25 August 2018 в 00:20
поделиться

Я мог бы решить эту установку Newtonsoft Json в веб-проекте с помощью самодельных пакетов

3
ответ дан Carolina 25 August 2018 в 00:20
поделиться

и как я могу сделать предупреждение?

Вам, вероятно, придется переустановить или обновить пакеты NuGet, чтобы исправить это.

14
ответ дан Community 25 August 2018 в 00:20
поделиться

Я удалил Microsoft ASP.NET MVC nuget.org из управления NuGet Packagaes и снова заново установил его. При повторной установке он разрешил все конфликты, связанные с версией бритвы. Попробуйте.

0
ответ дан jitendra r 25 August 2018 в 00:20
поделиться

Очевидно, что существует множество разных причин и, следовательно, много решений для этой проблемы. Чтобы выбросить мой микс, мы обновили сборку (System.Net.Http), которая ранее напрямую ссылалась в нашем веб-проекте на версию, управляемую NuGet. Это устранило прямую ссылку в этом проекте, но наш тестовый проект по-прежнему содержал прямую ссылку. Обновление обоих проектов для использования сборки, управляемой NuGet, разрешило проблему.

3
ответ дан joelmdev 25 August 2018 в 00:20
поделиться

Как указано в задаче 6583 CLI для точечной рассылки , проблема должна быть решена с помощью команды dotnet nuget locals --clear all.

6
ответ дан Nathan Tuggy 25 August 2018 в 00:20
поделиться

Если вы внесли какие-либо изменения в пакеты - снова запустите sln. Это сработало для меня!

2
ответ дан Naumaan Shaikh 25 August 2018 в 00:20
поделиться

Я изменил многословие MSBuild в Diagnostic.but не смог найти, где проблема была в соответствии с ответами выше. У меня был этот код в app.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="XbimXplorer.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>

Поэтому я просто изменил первая система, версия от 4.0.0.0 до 12.0.0.0 и мой проект работал.

0
ответ дан Pantelitsa Mavrovounioti 25 August 2018 в 00:20
поделиться

Я использую Visual Studio 2017 и столкнулся с этим, когда обновлял некоторые пакеты Nuget. Что для меня работало, так это открыть файл web.config и найти узел <runtime><assemblyBinding> и удалить его. Сохраните web.config и перестройте проект.

Посмотрите на окно Error List. Вы увидите, что похоже на массовое долгое предупреждение о привязке конфликтов. Дважды щелкните по нему, и он автоматически воссоздает блок <runtime><assemblyBinding> с правильными сопоставлениями.

2
ответ дан RandomHandle 25 August 2018 в 00:20
поделиться

Запустите msbuild Foo.sln /t:Rebuild /v:diag (из C:\Program Files (x86)\MSBuild\12.0\bin), чтобы построить свое решение из командной строки и получить более подробную информацию, затем найдите .csproj., который регистрирует предупреждение и проверяет его ссылки и ссылки других проектов, которые используют тот же общая сборка, которая отличается версией.

Редактирование. Вы также можете установить многословность сборки непосредственно в VS2013. Перейдите в меню Tools> Options, затем перейдите к Projects and Solutions и установите многословие MSBuild в Diagnostic.

Редактирование: немного разъяснений, поскольку я только что получил его. В моем случае предупреждение было связано с тем, что я добавлял ссылку, используя приглашение Resharper, а не диалог Add Reference, который сделал это бездействующим, хотя оба варианта v4 и v12 доступны для выбора.

<Reference Include="Microsoft.Build, Version=12.0.0.0, ..." />
<Reference Include="Microsoft.Build.Framework" />

vs

<Reference Include="Microsoft.Build, Version=12.0.0.0, ..." />
<Reference Include="Microsoft.Build.Framework, Version=12.0.0.0, ..." />

В журнале MSBuild с многообразием /v:diag это выглядело следующим образом. давая детали, с которыми столкнулись две ссылки: -

  There was a conflict between 
  "Microsoft.Build.Framework, Version=4.0.0.0, ..." and 
  "Microsoft.Build.Framework, Version=12.0.0.0, ...". (TaskId:16)

      "Microsoft.Build.Framework, Version=4.0.0.0, ..." was chosen because it was primary and 
      "Microsoft.Build.Framework, Version=12.0.0.0, ..." was not. (TaskId:16)

      References which depend on "Microsoft.Build.Framework, Version=4.0.0.0, ..." 
      [C:\...\v4.5.1\Microsoft.Build.Framework.dll]. (TaskId:16)

          C:\...\v4.5.1\Microsoft.Build.Framework.dll (TaskId:16)
            Project file item includes which caused reference "C:\...\v4.5.1\Microsoft.Build.Framework.dll". (TaskId:16)
              Microsoft.Build.Framework (TaskId:16)

      References which depend on "Microsoft.Build.Framework, Version=12.0.0.0, ..." 
      [C:\...\v12.0\Microsoft.Build.Framework.dll]. (TaskId:16)

          C:\...\v12.0\Microsoft.Build.dll (TaskId:16)
            Project file item includes which caused reference "C:\...\v12.0\Microsoft.Build.dll". (TaskId:16)
              Microsoft.Build, Version=12.0.0.0, ... (TaskId:16)

          C:\...\v12.0\Microsoft.Build.Engine.dll (TaskId:16)
            Project file item includes which caused reference "C:\...\v12.0\Microsoft.Build.Engine.dll". (TaskId:16)
              Microsoft.Build, Version=12.0.0.0, ... (TaskId:16)

C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets(1697,5): warning MSB3277: 
Found conflicts between different versions of the same dependent assembly that could not be resolved.  
These reference conflicts are listed in the build log when log verbosity is set to detailed. 
[C:\Users\Ilya.Kozhevnikov\Dropbox\BuildTree\BuildTree\BuildTree.csproj]
67
ответ дан Ruben Bartelink 25 August 2018 в 00:20
поделиться

Повторяя один из комментариев от @elshev Щелкните правой кнопкой мыши по решению -> Управление пакетами NuGet для решения -> В разделе «Консолидация» вы увидите, были ли установлены разные версии одного и того же пакета. Обновите пакеты там. Ошибка конфликта устранена.

13
ответ дан Shaswat Rungta 25 August 2018 в 00:20
поделиться

Изменение объема сборки в визуальной студии поможет указать в правильном направлении. Следуйте приведенным ниже инструкциям, чтобы изменить многословность в VS

1. Go to Tools->Options menu in VS
2. Open Projects and Solutions->Build and Run 
3. Change the value of the MSBuild project build output verbosity. 
   Pick one from Quiet, Minimal, Normal, Detailed and Diagnostic

. Проверьте окно вывода (cntl + alt + o) в VS для изменений в build

7
ответ дан sree 25 August 2018 в 00:20
поделиться

Я просто столкнулся с этим и проблема после переключения пакета с nuget на локально связанные DLL. Проблема была связана с устаревшим связыванием в app.config.

0
ответ дан Tom Makin 25 August 2018 в 00:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: