У меня есть проект 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 для проекта основного сайта?
- Что-то еще?