Ядро ASP.NET, ссылающееся на пакет TPL NuGet, не может найти файл или систему сборки. - PullRequest
0 голосов
/ 03 июля 2018

Я делаю новый проект ASP.NET Core 2.0, по сути, веб-API. Я должен сослаться на несколько сборок, которые являются сборками .NET 3.5, поэтому я запускаю его как проект .NET Framework, просто используя, по возможности, улучшения .NET Core.

Ссылочная сборка .NET Framework 3.5 ссылается на TaskParallelLibrary (1.0.2856). И я думаю, что именно здесь возникают мои проблемы. Стоит отметить, что Web API работал на своих конечных точках выборки и все работало, как ожидалось.

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

Could not load file or assembly 'System.Threading, Version=1.0.2856.102, Culture=neutral,
PublicKeyToken=31bf3856ad364e35'    
or one of its dependencies. The system cannot find the file specified.

Я пробовал несколько вещей, в том числе:

Добавление файла App.configx, чтобы попытаться принудительно настроить его для System.Threading платформы .NET Framework 4, предполагая, что он будет доступен. Вдохновленный страницей, я не могу найти ссылку для:

Вот содержание:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <!-- this is only here for binding redirects -->
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Threading" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
      </dependentAssembly>      
    </assemblyBinding>
  </runtime>
</configuration>

Непосредственное добавление пакета TaskTPLLibrary с этой версией в проект. Пока что это не помогло.

Добавление библиотеки Microsoft.Bcl.Async в мой проект. Опять ничего.

Попытка напрямую импортировать System.Threading из "C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework.NETCore \ v4.5 \ System.Threading.dll". Я получаю сообщение об ошибке «Ссылка недействительна или не поддерживается».

Я пробовал несколько других вещей, включая повторное клонирование, очистку, повторную очистку, громкую ругань и возвращение к ней в другой день, но все безрезультатно.

Мой список чтения включает (на этом компьютере):

И, вероятно, другие, которые я не помню

Некоторая дополнительная информация, поскольку эта проблема продолжается:

  • Создание приложения .NET Framework ASP.NET MVC с использованием .NET Framework 4.6.2 с той же базовой библиотекой работает. Он делает это косвенно, используя промежуточный .NET Framework 3.5 (просто для удобства, как и все остальное).
  • Консольная программа .NET Framework 4.6.2, которая использует библиотеку напрямую, также сталкивается с этой проблемой. Так что, похоже, это не само ядро ​​ASP.NET. Я изменю теги соответственно.
  • Использование консоли 4.6.2 с использованием библиотеки-посредника 3.5 не решает проблему.

Любая помощь в решении этой проблемы очень ценится.

1 Ответ

0 голосов
/ 09 июля 2018

Поскольку пока нет разумного ответа, я предполагаю, что наличие библиотеки .NET 3.5 Framework, на которую ссылается TaskParallelLibrary, по сути будет означать, что использование любого .NET выше 4 вызовет эту ошибку. При неуказанных условиях. Большую часть времени.

Кажется, что единственное решение этого вопроса - переписать все в многоцелевые .NET 3.5 и .NET Standard, а реализация Standard использует реальный TPL, а в 3.5 - пакет NuGet.

...