Мы разработали приложение для Магазина Windows, используя Visual Studio 2017. Мы используем AAD для входа в приложение.На стороне компиляции все в порядке, и мы можем создать релиз-пакет.Проблема возникает, когда мы пытаемся запустить сгенерированное приложение.Как только приложение запускается и пользователь вводит свои учетные данные, оно сообщает пользователю, что учетные данные недействительны.
Когда мы пытаемся отладить проблему, мы находимчто приложение выдает исключение «Task.cs».Эта ошибка возникает только в том случае, если мы установили флажок «.Net Native Tool Chain» в опциях сборки.Если мы не установим этот флажок и не создадим пакет, полученное приложение будет работать нормально.Теперь файл, на который жалуется отладчик, является частью библиотеки mscorlib, и эта библиотека добавляется в решение и отображается среди ссылок.Мы ломаем голову над тем, как обойти эту проблему и заставить ее работать.Пожалуйста, смотрите скриншот и описание ошибки ниже.
Locating source for 'f:\dd\ndp\fxcore\CoreRT\src\System.Private.Threading\src\System\Threading\Tasks\Task.cs'. (No checksum.)
The file 'f:\dd\ndp\fxcore\CoreRT\src\System.Private.Threading\src\System\Threading\Tasks\Task.cs' does not exist.
Looking in script documents for 'f:\dd\ndp\fxcore\CoreRT\src\System.Private.Threading\src\System\Threading\Tasks\Task.cs'...
Looking in the projects for 'f:\dd\ndp\fxcore\CoreRT\src\System.Private.Threading\src\System\Threading\Tasks\Task.cs'.
The file was not found in a project.
Looking in directory 'C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.14.26428\include\'...
Looking in directory 'C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.14.26428\include\cvt\'...
Looking in directory 'C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.14.26428\include\msclr\'...
Looking in directory 'C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.14.26428\include\sys\'...
Looking in directory 'C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.14.26428\include\thr\'...
Looking in directory 'C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.14.26428\crt\src\'...
Looking in directory 'C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.14.26428\crt\src\x64\'...
Looking in directory 'C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.14.26428\crt\src\arm\'...
Looking in directory 'C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.14.26428\crt\src\concrt\'...
Looking in directory 'C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.14.26428\crt\src\i386\'...
Looking in directory 'C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.14.26428\crt\src\linkopts\'...
Looking in directory 'C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.14.26428\crt\src\stl\'...
Looking in directory 'C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.14.26428\crt\src\vccorlib\'...
Looking in directory 'C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.14.26428\crt\src\vcruntime\'...
Looking in directory 'C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.14.26428\atlmfc\src\mfc\'...
Looking in directory 'C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.14.26428\atlmfc\src\atl\'...
Looking in directory 'C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.14.26428\atlmfc\include\'...
Looking for source using source server...
The debug source files settings for the active solution indicate that the debugger will not ask the user to find the file: f:\dd\ndp\fxcore\CoreRT\src\System.Private.Threading\src\System\Threading\Tasks\Task.cs.
The debugger could not locate the source file 'f:\dd\ndp\fxcore\CoreRT\src\System.Private.Threading\src\System\Threading\Tasks\Task.cs'.
Как я упоминал ранее, это исключение выдается только тогда, когда мы компилируем решение с установленным флажком «Compile with .Net Native tool chain».Мы помещаем блок, чтобы поймать сообщение, трассировку, тип исключения.Получаемое сообщение и тип:
Сообщение: Неразрешенный метод P / Invoke 'InternetSetOption! Wininet.dll' из этого метода.Пожалуйста, ищите этот метод в предупреждениях сборки для получения более подробной информации.
Тип исключения: System.TypeLoadException
Дальнейший анализ показывает, что исключение выдается следующей строкой вметод выхода:
authContext.TokenCache.Clear();
Ниже приведен полный метод
private void SignOut()
{
try
{
authContext.TokenCache.Clear();
// Also clear cookies from the browser control.
ClearCookies();
}
catch (Exception ex)
{
}
}