Когда веб-приложение ASP. NET (packages.config) ссылается на проект, который использует PackageReference - PullRequest
0 голосов
/ 06 августа 2020

У меня есть проект ASP. NET, который ссылается на другой проект, не относящийся к веб-сайту, который ведет журнал на azure. Не-веб-сайт был обновлен до PackageReference, а веб-сайт - нет (не может). Не-веб-версия зависит от Microsoft.Data.OData, потому что она использует Microsoft. WindowsAzure .Storage (старая версия, я знаю). В настоящее время я получаю желтый экран смерти для проекта веб-сайта, утверждая, что он не может найти Microsoft.Data.OData.dll:

Exception Details: System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.Data.OData, Version=5.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.

Source Error:


Line 31:             var tableClient = cloudStorageAccount.CreateCloudTableClient();
Line 32:             var table = tableClient.GetTableReference(TableName.ToLowerInvariant());
Line 33:             table.CreateIfNotExists();
Line 34:             _ctx = new LogServiceContext(cloudStorageAccount.TableEndpoint.AbsoluteUri, cloudStorageAccount.Credentials, TableName.ToLowerInvariant());
Line 35:         }

Source File: C:\repos\cj\OneShop\src\OneShopUniverse\OneShop.Logging\NLog\Targets\AzureStorageTarget.cs    Line: 33

Assembly Load Trace: The following information can be helpful to determine why the assembly 'Microsoft.Data.OData, Version=5.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' could not be loaded.


=== Pre-bind state information ===
LOG: DisplayName = Microsoft.Data.OData, Version=5.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
 (Fully-specified)
LOG: Appbase = file:///C:/repos/cj/OneShop/src/OneShopUniverse/OneShop.Lander.Web/
LOG: Initial PrivatePath = C:\repos\cj\OneShop\src\OneShopUniverse\OneShop.Lander.Web\bin
Calling assembly : Microsoft.WindowsAzure.Storage, Version=2.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35.


Веб-сайт не использует OData напрямую, только косвенно через этот другой проект. Каталог сборки теперь относительно лишен библиотек DLL по сравнению с тем, что было раньше, и действительно, OData.dll не находится ни в одном из тех мест, где журнал Fusion сообщает, что ищет его. Я подозреваю, что вследствие перехода на PackageReference эти библиотеки DLL больше не копируются в выходной каталог, а используются где-то в каком-то центральном кеше ..

LOG: This bind starts in default load context.
LOG: Using application configuration file: C:\repos\cj\OneShop\src\OneShopUniverse\OneShop.Lander.Web\web.config
LOG: Using host configuration file: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet.config
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config.
LOG: Post-policy reference: Microsoft.Data.OData, Version=5.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
LOG: Attempting download of new URL file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET Files/root/2e9ab490/4a5727aa/Microsoft.Data.OData.DLL.
LOG: Attempting download of new URL file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET Files/root/2e9ab490/4a5727aa/Microsoft.Data.OData/Microsoft.Data.OData.DLL.
LOG: Attempting download of new URL file:///C:/repos/cj/OneShop/src/OneShopUniverse/OneShop.Lander.Web/bin/Microsoft.Data.OData.DLL.
LOG: Attempting download of new URL file:///C:/repos/cj/OneShop/src/OneShopUniverse/OneShop.Lander.Web/bin/Microsoft.Data.OData/Microsoft.Data.OData.DLL.
LOG: Attempting download of new URL file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET Files/root/2e9ab490/4a5727aa/Microsoft.Data.OData.EXE.
LOG: Attempting download of new URL file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary ASP.NET Files/root/2e9ab490/4a5727aa/Microsoft.Data.OData/Microsoft.Data.OData.EXE.
LOG: Attempting download of new URL file:///C:/repos/cj/OneShop/src/OneShopUniverse/OneShop.Lander.Web/bin/Microsoft.Data.OData.EXE.
LOG: Attempting download of new URL file:///C:/repos/cj/OneShop/src/OneShopUniverse/OneShop.Lander.Web/bin/Microsoft.Data.OData/Microsoft.Data.OData.EXE.

.. но что я могу сделать с этим проектом, который все еще использует packages.config, пытаясь загрузить OData и не находя его? В самом проекте ведения журнала есть ссылка на OData ...

  • Если OData DLL должна быть помечена как эквивалент PackageReference для "copy local" (я уверен, что пробовал это раньше и получите исключение badimageformatexception, в котором говорится, что «сборку нельзя использовать вне [что-то, что звучит как GA C, но не GAC]»)
  • Следует ли мне добавлять ссылку на OData в файл packages.config / npm для проекта основного сайта?
  • Что-то еще?
...