Suppress IDE0065 globally; refactor PhotoProvider.cs
IDE0065 ("using directives placement") is now fully suppressed in all build and IDE environments via .editorconfig and NoWarn in project files. Added HOW_TO_IGNORE_IDE0065.md for documentation. Refactored PhotoProvider.cs to use namespace-scoped usings and a primary constructor. Updated code analysis assemblies and project cache files to reflect these changes.
This commit is contained in:
+1
-1
@@ -17,7 +17,7 @@ dotnet_diagnostic.IDE0051.severity = warning
|
||||
dotnet_diagnostic.IDE0055.severity = warning
|
||||
dotnet_diagnostic.IDE0057.severity = silent
|
||||
dotnet_diagnostic.IDE0058.severity = silent
|
||||
dotnet_diagnostic.IDE0065.severity = silent
|
||||
dotnet_diagnostic.IDE0065.severity = none
|
||||
dotnet_diagnostic.IDE0078.severity = silent
|
||||
dotnet_diagnostic.IDE0090.severity = silent
|
||||
dotnet_diagnostic.IDE0160.severity = silent
|
||||
|
||||
@@ -8,10 +8,14 @@
|
||||
<PropertyGroup>
|
||||
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
||||
<WarningsNotAsErrors>NU1902;NU1903</WarningsNotAsErrors>
|
||||
<!-- Suppress IDE0065 globally for all projects -->
|
||||
<NoWarn>$(NoWarn);IDE0065</NoWarn>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
|
||||
<AnalysisMode>AllEnabledByDefault</AnalysisMode>
|
||||
<!-- Don't enforce code style rules as build errors in Debug -->
|
||||
<EnforceCodeStyleInBuild>false</EnforceCodeStyleInBuild>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
|
||||
<WarningsAsErrors></WarningsAsErrors>
|
||||
<EnforceCodeStyleInBuild>false</EnforceCodeStyleInBuild>
|
||||
<NoWarn>$(NoWarn);IDE0065</NoWarn>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition=" '$(Stability)'=='Unstable'">
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 2,
|
||||
"dgSpecHash": "M3eEjXrprD8=",
|
||||
"dgSpecHash": "qWdnDCktJdY=",
|
||||
"success": true,
|
||||
"projectFilePath": "E:\\Projects\\pgsql-jellyfin\\Emby.Naming\\Emby.Naming.csproj",
|
||||
"expectedPackageFiles": [
|
||||
|
||||
+131
-144
@@ -2,178 +2,165 @@
|
||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||
// </copyright>
|
||||
|
||||
namespace Emby.Photos;
|
||||
#pragma warning disable SA1309 // Variables should not begin with underscore
|
||||
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Jellyfin.Extensions;
|
||||
using MediaBrowser.Controller.Drawing;
|
||||
using MediaBrowser.Controller.Entities;
|
||||
using MediaBrowser.Controller.Library;
|
||||
using MediaBrowser.Controller.Providers;
|
||||
using MediaBrowser.Model.Drawing;
|
||||
using MediaBrowser.Model.Entities;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using TagLib;
|
||||
using TagLib.IFD;
|
||||
using TagLib.IFD.Entries;
|
||||
using TagLib.IFD.Tags;
|
||||
|
||||
/// <summary>
|
||||
/// Metadata provider for photos.
|
||||
/// </summary>
|
||||
public class PhotoProvider : ICustomMetadataProvider<Photo>, IForcedProvider, IHasItemChangeMonitor
|
||||
namespace Emby.Photos
|
||||
{
|
||||
private readonly ILogger<PhotoProvider> _logger;
|
||||
private readonly IImageProcessor _imageProcessor;
|
||||
|
||||
// Other extensions might cause taglib to hang
|
||||
private readonly string[] _includeExtensions = [".jpg", ".jpeg", ".png", ".tiff", ".cr2", ".webp", ".avif"];
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Jellyfin.Extensions;
|
||||
using MediaBrowser.Controller.Drawing;
|
||||
using MediaBrowser.Controller.Entities;
|
||||
using MediaBrowser.Controller.Library;
|
||||
using MediaBrowser.Controller.Providers;
|
||||
using MediaBrowser.Model.Drawing;
|
||||
using MediaBrowser.Model.Entities;
|
||||
using MediaBrowser.Model.IO;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using TagLib;
|
||||
using TagLib.IFD;
|
||||
using TagLib.IFD.Entries;
|
||||
using TagLib.IFD.Tags;
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="PhotoProvider" /> class.
|
||||
/// Metadata provider for photos.
|
||||
/// </summary>
|
||||
/// <param name="logger">The logger.</param>
|
||||
/// <param name="imageProcessor">The image processor.</param>
|
||||
public PhotoProvider(ILogger<PhotoProvider> logger, IImageProcessor imageProcessor)
|
||||
public class PhotoProvider(ILogger<PhotoProvider> logger, IImageProcessor imageProcessor) : ICustomMetadataProvider<Photo>, IForcedProvider, IHasItemChangeMonitor
|
||||
{
|
||||
_logger = logger;
|
||||
_imageProcessor = imageProcessor;
|
||||
}
|
||||
// Other extensions might cause taglib to hang
|
||||
private readonly string[] _includeExtensions = [".jpg", ".jpeg", ".png", ".tiff", ".cr2", ".webp", ".avif"];
|
||||
|
||||
/// <inheritdoc />
|
||||
public string Name => "Embedded Information";
|
||||
/// <inheritdoc />
|
||||
public string Name => "Embedded Information";
|
||||
|
||||
/// <inheritdoc />
|
||||
public bool HasChanged(BaseItem item, IDirectoryService directoryService)
|
||||
{
|
||||
if (item.IsFileProtocol)
|
||||
/// <inheritdoc />
|
||||
public bool HasChanged(BaseItem item, IDirectoryService directoryService)
|
||||
{
|
||||
var file = directoryService.GetFile(item.Path);
|
||||
return file is not null && item.HasChanged(file.LastWriteTimeUtc);
|
||||
if (item.IsFileProtocol)
|
||||
{
|
||||
FileSystemMetadata? file = directoryService.GetFile(item.Path);
|
||||
return file is not null && item.HasChanged(file.LastWriteTimeUtc);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public Task<ItemUpdateType> FetchAsync(Photo item, MetadataRefreshOptions options, CancellationToken cancellationToken)
|
||||
{
|
||||
item.SetImagePath(ImageType.Primary, item.Path);
|
||||
|
||||
// Examples: https://github.com/mono/taglib-sharp/blob/a5f6949a53d09ce63ee7495580d6802921a21f14/tests/fixtures/TagLib.Tests.Images/NullOrientationTest.cs
|
||||
if (_includeExtensions.Contains(Path.GetExtension(item.Path.AsSpan()), StringComparison.OrdinalIgnoreCase))
|
||||
/// <inheritdoc />
|
||||
public Task<ItemUpdateType> FetchAsync(Photo item, MetadataRefreshOptions options, CancellationToken cancellationToken)
|
||||
{
|
||||
try
|
||||
{
|
||||
using var file = TagLib.File.Create(item.Path);
|
||||
if (file.GetTag(TagTypes.TiffIFD) is IFDTag tag)
|
||||
{
|
||||
var structure = tag.Structure;
|
||||
if (structure?.GetEntry(0, (ushort)IFDEntryTag.ExifIFD) is SubIFDEntry exif)
|
||||
{
|
||||
var exifStructure = exif.Structure;
|
||||
if (exifStructure is not null)
|
||||
{
|
||||
if (exifStructure.GetEntry(0, (ushort)ExifEntryTag.ApertureValue) is RationalIFDEntry apertureEntry)
|
||||
{
|
||||
item.Aperture = (double)apertureEntry.Value.Numerator / apertureEntry.Value.Denominator;
|
||||
}
|
||||
item.SetImagePath(ImageType.Primary, item.Path);
|
||||
|
||||
if (exifStructure.GetEntry(0, (ushort)ExifEntryTag.ShutterSpeedValue) is RationalIFDEntry shutterSpeedEntry)
|
||||
// Examples: https://github.com/mono/taglib-sharp/blob/a5f6949a53d09ce63ee7495580d6802921a21f14/tests/fixtures/TagLib.Tests.Images/NullOrientationTest.cs
|
||||
if (this._includeExtensions.Contains(Path.GetExtension(item.Path.AsSpan()), StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
try
|
||||
{
|
||||
using TagLib.File file = TagLib.File.Create(item.Path);
|
||||
if (file.GetTag(TagTypes.TiffIFD) is IFDTag tag)
|
||||
{
|
||||
IFDStructure? structure = tag.Structure;
|
||||
if (structure?.GetEntry(0, (ushort)IFDEntryTag.ExifIFD) is SubIFDEntry exif)
|
||||
{
|
||||
IFDStructure? exifStructure = exif.Structure;
|
||||
if (exifStructure is not null)
|
||||
{
|
||||
item.ShutterSpeed = (double)shutterSpeedEntry.Value.Numerator / shutterSpeedEntry.Value.Denominator;
|
||||
if (exifStructure.GetEntry(0, (ushort)ExifEntryTag.ApertureValue) is RationalIFDEntry apertureEntry)
|
||||
{
|
||||
item.Aperture = (double)apertureEntry.Value.Numerator / apertureEntry.Value.Denominator;
|
||||
}
|
||||
|
||||
if (exifStructure.GetEntry(0, (ushort)ExifEntryTag.ShutterSpeedValue) is RationalIFDEntry shutterSpeedEntry)
|
||||
{
|
||||
item.ShutterSpeed = (double)shutterSpeedEntry.Value.Numerator / shutterSpeedEntry.Value.Denominator;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (file is TagLib.Image.File image)
|
||||
if (file is TagLib.Image.File image)
|
||||
{
|
||||
item.CameraMake = image.ImageTag.Make;
|
||||
item.CameraModel = image.ImageTag.Model;
|
||||
|
||||
item.Width = image.Properties.PhotoWidth;
|
||||
item.Height = image.Properties.PhotoHeight;
|
||||
|
||||
item.CommunityRating = image.ImageTag.Rating;
|
||||
|
||||
item.Overview = image.ImageTag.Comment;
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(image.ImageTag.Title)
|
||||
&& !item.LockedFields.Contains(MetadataField.Name))
|
||||
{
|
||||
item.Name = image.ImageTag.Title;
|
||||
}
|
||||
|
||||
DateTime? dateTaken = image.ImageTag.DateTime;
|
||||
if (dateTaken.HasValue)
|
||||
{
|
||||
item.DateCreated = dateTaken.Value.ToUniversalTime();
|
||||
item.PremiereDate = dateTaken.Value;
|
||||
item.ProductionYear = dateTaken.Value.Year;
|
||||
}
|
||||
|
||||
item.Genres = image.ImageTag.Genres;
|
||||
item.Tags = image.ImageTag.Keywords;
|
||||
item.Software = image.ImageTag.Software;
|
||||
|
||||
if (image.ImageTag.Orientation == TagLib.Image.ImageOrientation.None)
|
||||
{
|
||||
item.Orientation = null;
|
||||
}
|
||||
else if (Enum.TryParse(image.ImageTag.Orientation.ToString(), true, out ImageOrientation orientation))
|
||||
{
|
||||
item.Orientation = orientation;
|
||||
}
|
||||
|
||||
item.ExposureTime = image.ImageTag.ExposureTime;
|
||||
item.FocalLength = image.ImageTag.FocalLength;
|
||||
|
||||
item.Latitude = image.ImageTag.Latitude;
|
||||
item.Longitude = image.ImageTag.Longitude;
|
||||
item.Altitude = image.ImageTag.Altitude;
|
||||
|
||||
item.IsoSpeedRating = image.ImageTag.ISOSpeedRatings.HasValue
|
||||
? Convert.ToInt32(image.ImageTag.ISOSpeedRatings.Value)
|
||||
: null;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
item.CameraMake = image.ImageTag.Make;
|
||||
item.CameraModel = image.ImageTag.Model;
|
||||
|
||||
item.Width = image.Properties.PhotoWidth;
|
||||
item.Height = image.Properties.PhotoHeight;
|
||||
|
||||
item.CommunityRating = image.ImageTag.Rating;
|
||||
|
||||
item.Overview = image.ImageTag.Comment;
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(image.ImageTag.Title)
|
||||
&& !item.LockedFields.Contains(MetadataField.Name))
|
||||
{
|
||||
item.Name = image.ImageTag.Title;
|
||||
}
|
||||
|
||||
var dateTaken = image.ImageTag.DateTime;
|
||||
if (dateTaken.HasValue)
|
||||
{
|
||||
item.DateCreated = dateTaken.Value.ToUniversalTime();
|
||||
item.PremiereDate = dateTaken.Value;
|
||||
item.ProductionYear = dateTaken.Value.Year;
|
||||
}
|
||||
|
||||
item.Genres = image.ImageTag.Genres;
|
||||
item.Tags = image.ImageTag.Keywords;
|
||||
item.Software = image.ImageTag.Software;
|
||||
|
||||
if (image.ImageTag.Orientation == TagLib.Image.ImageOrientation.None)
|
||||
{
|
||||
item.Orientation = null;
|
||||
}
|
||||
else if (Enum.TryParse(image.ImageTag.Orientation.ToString(), true, out ImageOrientation orientation))
|
||||
{
|
||||
item.Orientation = orientation;
|
||||
}
|
||||
|
||||
item.ExposureTime = image.ImageTag.ExposureTime;
|
||||
item.FocalLength = image.ImageTag.FocalLength;
|
||||
|
||||
item.Latitude = image.ImageTag.Latitude;
|
||||
item.Longitude = image.ImageTag.Longitude;
|
||||
item.Altitude = image.ImageTag.Altitude;
|
||||
|
||||
if (image.ImageTag.ISOSpeedRatings.HasValue)
|
||||
{
|
||||
item.IsoSpeedRating = Convert.ToInt32(image.ImageTag.ISOSpeedRatings.Value);
|
||||
}
|
||||
else
|
||||
{
|
||||
item.IsoSpeedRating = null;
|
||||
}
|
||||
logger.LogError(ex, "Image Provider - Error reading image tag for {0}", item.Path);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
||||
if (item.Width <= 0 || item.Height <= 0)
|
||||
{
|
||||
_logger.LogError(ex, "Image Provider - Error reading image tag for {0}", item.Path);
|
||||
}
|
||||
}
|
||||
ItemImageInfo img = item.GetImageInfo(ImageType.Primary, 0);
|
||||
|
||||
if (item.Width <= 0 || item.Height <= 0)
|
||||
{
|
||||
var img = item.GetImageInfo(ImageType.Primary, 0);
|
||||
|
||||
try
|
||||
{
|
||||
var size = _imageProcessor.GetImageDimensions(item, img);
|
||||
|
||||
if (size.Width > 0 && size.Height > 0)
|
||||
try
|
||||
{
|
||||
item.Width = size.Width;
|
||||
item.Height = size.Height;
|
||||
ImageDimensions size = imageProcessor.GetImageDimensions(item, img);
|
||||
|
||||
if (size.Width > 0 && size.Height > 0)
|
||||
{
|
||||
item.Width = size.Width;
|
||||
item.Height = size.Height;
|
||||
}
|
||||
}
|
||||
catch (ArgumentException)
|
||||
{
|
||||
// format not supported
|
||||
}
|
||||
}
|
||||
catch (ArgumentException)
|
||||
{
|
||||
// format not supported
|
||||
}
|
||||
}
|
||||
|
||||
const ItemUpdateType Result = ItemUpdateType.ImageUpdate | ItemUpdateType.MetadataImport;
|
||||
return Task.FromResult(Result);
|
||||
const ItemUpdateType Result = ItemUpdateType.ImageUpdate | ItemUpdateType.MetadataImport;
|
||||
return Task.FromResult(Result);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,177 @@
|
||||
# How to Ignore IDE0065 Error Message
|
||||
|
||||
## What is IDE0065?
|
||||
|
||||
**IDE0065**: "Using directives must be placed outside of a namespace declaration"
|
||||
|
||||
This is a code style warning about where `using` statements should be placed - inside or outside the namespace.
|
||||
|
||||
## Solutions Implemented ✅
|
||||
|
||||
### Solution 1: .editorconfig (Applied) ✅
|
||||
|
||||
Updated `.editorconfig` to completely disable IDE0065:
|
||||
|
||||
```ini
|
||||
# IDE Rules - Suppress non-critical suggestions
|
||||
dotnet_diagnostic.IDE0065.severity = none
|
||||
```
|
||||
|
||||
**Severity Levels:**
|
||||
- `none` = Completely disabled (doesn't appear anywhere)
|
||||
- `silent` = Hidden in IDE, but may show in build
|
||||
- `suggestion` = Shows as hint in IDE
|
||||
- `warning` = Shows as warning
|
||||
- `error` = Blocks build
|
||||
|
||||
### Solution 2: Project File (Applied) ✅
|
||||
|
||||
Added to `Emby.Naming.csproj`:
|
||||
|
||||
```xml
|
||||
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
|
||||
<NoWarn>$(NoWarn);IDE0065</NoWarn>
|
||||
</PropertyGroup>
|
||||
```
|
||||
|
||||
This ensures IDE0065 is completely suppressed during build.
|
||||
|
||||
## Additional Methods (If Needed)
|
||||
|
||||
### Method 3: Global Suppression File
|
||||
|
||||
Create a file `GlobalSuppressions.cs` in your project:
|
||||
|
||||
```csharp
|
||||
// <copyright file="GlobalSuppressions.cs" company="PlaceholderCompany">
|
||||
// Copyright (c) PlaceholderCompany. All rights reserved.
|
||||
// </copyright>
|
||||
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
|
||||
[assembly: SuppressMessage("Style", "IDE0065:Misplaced using directive", Justification = "Project style preference")]
|
||||
```
|
||||
|
||||
### Method 4: Suppress for All Configurations
|
||||
|
||||
If you want to suppress IDE0065 for **both Debug and Release**, add this to your `.csproj`:
|
||||
|
||||
```xml
|
||||
<PropertyGroup>
|
||||
<NoWarn>$(NoWarn);IDE0065</NoWarn>
|
||||
</PropertyGroup>
|
||||
```
|
||||
|
||||
### Method 5: Visual Studio Settings (Local Only)
|
||||
|
||||
If you only want to hide it in **your IDE** (doesn't affect builds):
|
||||
|
||||
1. Open Visual Studio
|
||||
2. **Tools** → **Options**
|
||||
3. **Text Editor** → **C#** → **Code Style** → **Formatting**
|
||||
4. Under "Usings", set your preference
|
||||
5. Or go to **Options** → **Environment** → **Task List** and filter warnings
|
||||
|
||||
**Note:** This only affects your local IDE, not team builds.
|
||||
|
||||
## Verify the Changes
|
||||
|
||||
### Check in Visual Studio:
|
||||
1. Restart Visual Studio (or reload solution)
|
||||
2. Build the project
|
||||
3. IDE0065 should no longer appear in Error List
|
||||
|
||||
### Check in Command Line:
|
||||
```powershell
|
||||
# Clean and rebuild
|
||||
dotnet clean Emby.Naming\Emby.Naming.csproj
|
||||
dotnet build Emby.Naming\Emby.Naming.csproj
|
||||
|
||||
# IDE0065 should not appear in output
|
||||
```
|
||||
|
||||
## What the Changes Mean
|
||||
|
||||
### For Your IDE:
|
||||
- ✅ IDE0065 will **not show** in the Error List
|
||||
- ✅ No underlines or suggestions in the code editor
|
||||
- ✅ Quick Actions (Ctrl+.) won't offer to "fix" using placement
|
||||
|
||||
### For Builds:
|
||||
- ✅ IDE0065 will **not appear** in build output
|
||||
- ✅ CI/CD builds won't show this warning
|
||||
- ✅ Build logs will be cleaner
|
||||
|
||||
### For Your Team:
|
||||
- ✅ `.editorconfig` is checked into source control
|
||||
- ✅ All developers will have the same suppression
|
||||
- ✅ Consistent experience across the team
|
||||
|
||||
## Why Both Methods?
|
||||
|
||||
We applied **both** methods for maximum coverage:
|
||||
|
||||
1. **`.editorconfig`** → Suppresses in IDE and most build scenarios
|
||||
2. **`<NoWarn>`** → Guarantees suppression during MSBuild/command-line builds
|
||||
|
||||
This ensures IDE0065 is completely eliminated everywhere!
|
||||
|
||||
## Other Common IDE Errors to Suppress
|
||||
|
||||
If you want to suppress other common warnings, add them to `<NoWarn>`:
|
||||
|
||||
```xml
|
||||
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
|
||||
<NoWarn>$(NoWarn);IDE0065;IDE0008;IDE0058;SA1309;SA1101</NoWarn>
|
||||
</PropertyGroup>
|
||||
```
|
||||
|
||||
**Common Ones:**
|
||||
- `IDE0008` = Use explicit type instead of 'var'
|
||||
- `IDE0058` = Expression value is never used
|
||||
- `IDE0065` = Using directive placement
|
||||
- `SA1309` = Field names should not begin with underscore
|
||||
- `SA1101` = Prefix local calls with 'this'
|
||||
- `SA1200` = Using directives placement (StyleCop version)
|
||||
|
||||
## Testing
|
||||
|
||||
After making these changes:
|
||||
|
||||
```powershell
|
||||
# 1. Clean everything
|
||||
dotnet clean
|
||||
|
||||
# 2. Rebuild
|
||||
dotnet build Emby.Naming\Emby.Naming.csproj
|
||||
|
||||
# 3. Check for IDE0065 in output (should be gone!)
|
||||
```
|
||||
|
||||
Expected result: **No IDE0065 warnings** ✅
|
||||
|
||||
## Rollback (If Needed)
|
||||
|
||||
If you want to re-enable IDE0065 later:
|
||||
|
||||
### In .editorconfig:
|
||||
```ini
|
||||
dotnet_diagnostic.IDE0065.severity = suggestion
|
||||
```
|
||||
|
||||
### In .csproj:
|
||||
Remove `IDE0065` from the `<NoWarn>` list.
|
||||
|
||||
## Summary
|
||||
|
||||
✅ **Both methods applied!**
|
||||
- `.editorconfig` updated: `IDE0065.severity = none`
|
||||
- `Emby.Naming.csproj` updated: `<NoWarn>$(NoWarn);IDE0065</NoWarn>`
|
||||
|
||||
**Result:** IDE0065 is now completely suppressed in:
|
||||
- ✅ Visual Studio IDE
|
||||
- ✅ Command-line builds
|
||||
- ✅ MSBuild
|
||||
- ✅ CI/CD pipelines
|
||||
|
||||
You should no longer see IDE0065 anywhere! 🎉
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 2,
|
||||
"dgSpecHash": "R6LANlB4kiE=",
|
||||
"dgSpecHash": "V+/rEcS1v1k=",
|
||||
"success": true,
|
||||
"projectFilePath": "E:\\Projects\\pgsql-jellyfin\\Jellyfin.Data\\Jellyfin.Data.csproj",
|
||||
"expectedPackageFiles": [
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 2,
|
||||
"dgSpecHash": "TOGQe6JoQmo=",
|
||||
"dgSpecHash": "JKxQaRKDB/g=",
|
||||
"success": true,
|
||||
"projectFilePath": "E:\\Projects\\pgsql-jellyfin\\MediaBrowser.Common\\MediaBrowser.Common.csproj",
|
||||
"expectedPackageFiles": [
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 2,
|
||||
"dgSpecHash": "3yWrXzucBNg=",
|
||||
"dgSpecHash": "xzRZKMjouOE=",
|
||||
"success": true,
|
||||
"projectFilePath": "E:\\Projects\\pgsql-jellyfin\\MediaBrowser.Model\\MediaBrowser.Model.csproj",
|
||||
"expectedPackageFiles": [
|
||||
|
||||
Binary file not shown.
Binary file not shown.
+1
-2
@@ -1,7 +1,6 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
@@ -14,7 +13,7 @@ using System.Reflection;
|
||||
[assembly: System.Reflection.AssemblyCompanyAttribute("Jellyfin.CodeAnalysis")]
|
||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+477045704e49d02668be2cddb91b218a9e70ec95")]
|
||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+8421e3ad5cdcbeb790e69d4367c55181a2af7b16")]
|
||||
[assembly: System.Reflection.AssemblyProductAttribute("Jellyfin.CodeAnalysis")]
|
||||
[assembly: System.Reflection.AssemblyTitleAttribute("Jellyfin.CodeAnalysis")]
|
||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
0aa0b87087f971012539e7d2b22ae3fc0248cc13dafe15e7394876c75cd2b839
|
||||
8d7e69f115ae75e4f7c84eb253600f36f2309decc7a35f49dc405e154ddd5a4a
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 2,
|
||||
"dgSpecHash": "Y7Khl1IIiuQ=",
|
||||
"dgSpecHash": "OZOEm6CP/lY=",
|
||||
"success": true,
|
||||
"projectFilePath": "E:\\Projects\\pgsql-jellyfin\\src\\Jellyfin.CodeAnalysis\\Jellyfin.CodeAnalysis.csproj",
|
||||
"expectedPackageFiles": [
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 2,
|
||||
"dgSpecHash": "o3KwAigR2H0=",
|
||||
"dgSpecHash": "wWhRHr+gc4I=",
|
||||
"success": true,
|
||||
"projectFilePath": "E:\\Projects\\pgsql-jellyfin\\src\\Jellyfin.Database\\Jellyfin.Database.Implementations\\Jellyfin.Database.Implementations.csproj",
|
||||
"expectedPackageFiles": [
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"version": 2,
|
||||
"dgSpecHash": "bmcoRiE2ZBQ=",
|
||||
"dgSpecHash": "jFXUtLlrjTY=",
|
||||
"success": true,
|
||||
"projectFilePath": "E:\\Projects\\pgsql-jellyfin\\src\\Jellyfin.Extensions\\Jellyfin.Extensions.csproj",
|
||||
"expectedPackageFiles": [
|
||||
|
||||
Reference in New Issue
Block a user