Как разрешить конфликт ApplicationException между mscorlib и пакетом Nuget - PullRequest
0 голосов
/ 25 мая 2018

Проблема

Я пытаюсь показать PDF-файл пользователям моих приложений для Android и iOS Xamarin.Forms.Я пытаюсь использовать пакет Nuget Syncfusion.Xamarin.SfPdfViewer .

Однако при установке пакета и перекомпиляции выдается следующая ошибка:

Ошибка CS0433Тип «ApplicationException» существует в «Syncfusion.Compression.Portable, Version = 16.1451.0.37, Culture = нейтральный, PublicKeyToken = null» и «mscorlib, Version = 2.0.5.0, Culture = нейтральный, PublicKeyToken = 7cec85d7bea7798e»

Выполнены шаги

Я прочитал и учел примечание о пакете Nuget:

Примечание. Этот пакет необходимо установить во всех проектах Xamarin.Forms (PCL, Android, iOS и UWP).

Я искал в Интернете подобные случаи, такие как:

Спецификации

Я использую:

  • Visual Studio 2017 версия 15.7.2
  • Xamarinверсия 4.10.0448
  • Xamarin.Forms v3.0.0.482510
  • NETStandard.Library v2.0.3


Спасибо за помощь.

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

Эта проблема возникает из-за Syncfusion.Compression.Portable, dll (входит в пакет Syncfusion.Xamarin.SfPdfViewer) и mscorlib.dll содержит один и тот же полностью квалифицированный тип System.ApplicationException.Эта проблема неоднозначности была недавно исправлена ​​в наших проектах, и исправление будет включено в наш следующий выпуск, который будет выпущен в конце июля 2018 года.

Обходной путь: Однако мы имеемнашел обходной путь для решения этой проблемы с нашей стороны.Как сказано в этой ссылке, мы просим вас ввести псевдоним extern для сборки Syncfusion.Compression.Portable и использовать необходимый класс в вашем приложении.

Шаги для решения этой проблемы: • Добавьте следующий фрагмент кода вваш файл csproj, в котором псевдоним «сжатие» установлен для сборки Syncfusion.Compression.Portable.

<Target Name="ChangeAliasesOfStrongNameAssemblies" BeforeTargets="FindReferenceAssembliesForReferences;ResolveReferences">
    <ItemGroup>
      <ReferencePath Condition="'%(FileName)' == 'Syncfusion.Compression.Portable'">
        <Aliases>compression</Aliases>
      </ReferencePath>
    </ItemGroup>
  </Target>

• В классах, используемых ApplicationException, добавьте сжатие внешнего псевдонима;в верхней части файла и используйте требуемое ApplicationException в файле класса.

extern alias compression;
using System;
using Xamarin.Forms;
namespace App1
{
    public partial class MainPage : ContentPage
    {
        public MainPage()
            {
                InitializeComponent();
                try {}          

                // To use the netstandard dll ApplicationException
                catch(global::System.ApplicationException ee1) {}

                // To use the compression dll ApplicationException
                catch (compression::System.ApplicationException ee2)   {}
             }
      }
}

Ниже мы предоставили простой пример ссылки, демонстрирующий изменения для вашей справки.

Пример ссылки: http://www.syncfusion.com/downloads/support/directtrac/general/ze/App1243042706.zip

Я работаю в Syncfusion.

0 голосов
/ 27 мая 2018

Найден обходной путь.Поскольку хорошая практика заключается в получении значимых исключений из Exception, я создал его и использовал вместо того, где я использовал ApplicationException.Это устранило двусмысленность, и решение было скомпилировано.

public class ClaimWriterException : Exception
{
    public ClaimWriterException()
    {
    }

    public ClaimWriterException(string message)
        : base(message)
    {
    }

    public ClaimWriterException(string message, Exception inner)
        : base(message, inner)
    {
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...