Coder Social home page Coder Social logo

xoofx / unitynuget Goto Github PK

View Code? Open in Web Editor NEW
602.0 8.0 96.0 754 KB

Provides a service to install NuGet packages into a Unity project via the Unity Package Manager

License: BSD 2-Clause "Simplified" License

C# 99.55% Dockerfile 0.45%
nuget unity unity3d dotnet dotnet-core asp-net-core

unitynuget's Introduction

UnityNuGet Build Status Static Badge Static Badge

This project provides a seamlessly integration of a curated list of NuGet packages within the Unity Package Manager.

DISCLAIMER: This is not an official service provided by Unity Technologies Inc.

Installation

Add scope registry (manifest.json):

In order to use this service you simply need to edit the Packages/manifest.json in your project and add the following scoped registry:

{
  "scopedRegistries": [
    {
      "name": "Unity NuGet",
      "url": "https://unitynuget-registry.azurewebsites.net",
      "scopes": [
        "org.nuget"
      ]
    }
  ],
  "dependencies": {
     "org.nuget.scriban":  "2.1.0"
  }
}

Add scope registry (Package Manager UI):

Instructions: https://docs.unity3d.com/Manual/class-PackageManager.html

Name: Unity NuGet

Url: https://unitynuget-registry.azurewebsites.net

Scope(s): org.nuget

Disable Assembly Version Validation

This step is necessary to ensure that binding redirects for strongly named assemblies in NuGet packages resolve correctly to paths within the Unity project.

  • In Unity 2022.2+, this is the default behavior, so no action is required.
  • For earlier Unity versions, uncheck "Project Settings > Player > Other Settings > Configuration > Assembly Version Validation"

Verify installation

WARNING: If you are encountering weird compilation errors with UnityNuGet and you have been using UnityNuGet already, it could be that we have updated packages on the server, and in that case, you need to clear the cache containing all Unity NPM packages downdloaded from the unitynuget-registry.azurewebsites.net registry. On Windows, this cache is located at: %localappdata%\Unity\cache\npm\unitynuget-registry.azurewebsites.net

Cache locations by OS: https://docs.unity3d.com/Manual/upm-cache.html

When opening the Package Manager Window, you should see a few packages coming from NuGet (with the postfix text (NuGet))

UnityEditorWithNuGet

Adding a package to the registry

This service provides only a curated list of NuGet packages

Your NuGet package needs to respect a few constraints in order to be listed in the curated list:

  • It must have non-preview versions (e.g 1.0.0 but not 1.0.0-preview.1)
  • It must provide .NETStandard2.0 assemblies as part of its package

You can send a PR to this repository to modify the registry.json file (don't forget to maintain the alphabetical order)

You also need to specify the lowest version of your package that has support for .NETStandard2.0 upward so that other packages depending on your package have a chance to work with.

Beware that all transitive dependencies of the package must be explicitly listed in the registry as well.

NOTE:

  • We reserve the right to decline a package to be available through this service
  • The server will be updated only when a new version tag is pushed on the main branch.

Compatibility

Only compatible with Unity 2019.1 and potentially with newer version.

NOTE: This service is currently only tested with Unity 2019.x, 2020.x and 2021.x

It may not work with a more recent version of Unity

Docker

Available in ghcr (GitHub Container Registry).

Supported platforms:

  • linux/amd64
  • linux/arm64

Example of a basic docker-compose.yml file:

services:
  unitynuget:
    image: ghcr.io/xoofx/unitynuget:latest
    ports:
      - 5000:80
    volumes:
      - ./unity_packages:/app/unity_packages
      - ./registry.json:/app/registry.json # (Optional) You can have your own registry.json with a different package list than the one already included in the repository

There is a complete example with all available options in examples/docker.

Accessing a private NuGet feed from Azure DevOps

As documented in the example, it is possible to provide a custom NuGet.Config file.

To add a private feed, the following fields must be filled in.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <clear />
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
    <add key="MyCustomFeed" value="https://pkgs.dev.azure.com/<ORG_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json" />
  </packageSources>
  <packageSourceCredentials>
    <MyCustomFeed>
      <add key="Username" value="<Azure DevOps Email>" />
      <add key="ClearTextPassword" value="<Azure DevOps PAT>" />
    </MyCustomFeed>
  </packageSourceCredentials>
</configuration>

Note: The Azure DevOps PAT must have Packaging (Read) permissions.

FAQ

Where is hosted this service?

On Azure through my own Azure credits coming from my MVP subscription, enjoy!

Why can't you add all NuGet packages?

The reason is that many NuGet packages are not compatible with Unity, or do not provide .NETStandard2.0 assemblies or are not relevant for being used within Unity.

Also currently the Package Manager doesn't provide a way to filter easily packages, so the UI is currently not adequate to list lots of packages.

Why does it require .NETStandard2.0?

Since 2019.1.x, Unity is compatible with .NETStandard2.0 and it is the .NET profile that is preferred to be used.

Having a .NETStandard2.0 for NuGet packages for Unity can ensure that the experience to add a package to your project is consistent and well supported.

More information: https://docs.unity3d.com/Manual/dotnetProfileSupport.html

How this service is working?

This project implements a simplified compatible NPM server in C# using ASP.NET Core and converts NuGet packages to Unity packages before serving them.

Every 10min, packages are updated from NuGet so that if a new version is published, from the curated list of NuGet packages, it will be available through this service.

Once converted, these packages are cached on the disk on the server.

License

This software is released under the BSD-Clause 2 license.

Author

Alexandre Mutel aka xoofx

unitynuget's People

Contributors

auros avatar bdovaz avatar bucurb avatar comradevanti avatar dependabot[bot] avatar frostbun avatar hybridherbst avatar irakli avatar ivanmurzak avatar jessetg avatar kuraiandras avatar markciliavincenti avatar michaelghseg avatar monologuechi avatar nefelim4ag avatar nowsprinting avatar redwyre avatar runette avatar runninglvlan avatar sbergen avatar shiena avatar starikcetin avatar tapiorantala avatar tk-aria avatar tomdexp avatar tonygiang avatar visose avatar voltstro avatar vrenken avatar xoofx avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

unitynuget's Issues

[Question] why not all packages in the curated list get served?

Hi @xoofx,

Thanks for maintaining this project. I found not all packages in the curated list get served.

List all packages from the register /-/all/ endpoints (total 11 packages).

curl -s https://unitynuget-registry.azurewebsites.net/-/all | json -k
[
  "_updated",
  "org.nuget.automaticgraphlayout",
  "org.nuget.eflatun.expansions",
  "org.nuget.geneticsharp",
  "org.nuget.microsoft.azure.kinect.sensor",
  "org.nuget.morelinq",
  "org.nuget.newtonsoft.json",
  "org.nuget.scriban",
  "org.nuget.sharpcompress",
  "org.nuget.system.buffers",
  "org.nuget.system.memory",
  "org.nuget.system.runtime.compilerservices.unsafe"
]

List all packages from the curated list (total 83 packages)

curl -s https://raw.githubusercontent.com/xoofx/UnityNuGet/master/registry.json | json -k

Try to inspect one "missing" package System.Text.Json, all possible naming returns not found

BTW, I think the register server could return HTTP 404 for the not found package, not HTTP 200.

Checksum fails in the past few days

We have been getting random checksum fails from the azure hosted registry. Did we break something or is this a problem with the registry?

15:24:07 [DBG]     org.nuget.system.memory: Tarball download failed after [1] attempts. Downloaded [63296] bytes, expected [63296]:
15:24:07 [DBG]       shasum check failed for C:\ProgramData\Unity\cache\npm\unitynuget-registry.azurewebsites.net\.tmp-12896-rlrZKQCZKY4E\tarball\package.tgz
15:24:07 [DBG]       Expected: 494002bc9ae57ac74a4db8513da4782de700e1a0
15:24:07 [DBG]       Actual:   d1d514578675e35023a03f2f38644b93bd8d1d72

I always happens with the org.nuget.system.memory package and we can't reliably reproduce this.
This happens on 2 VM build agents that we host on prem, and they have been working fine up until yesterday.
We did not install any new packages, and everything works fine on developer machines

Feature request: Ability to set import settings for assemblies

Some NuGet assemblies would be useful, but only on certain platforms. NSubsitute, for instance, will only work within the Editor or on Mono-powered builds, as it uses System.Reflection.Emit; it would need to have all platforms except for the Editor and Standalone excluded, plus it would need to test for whatever the#define for Mono builds is.

Problem adding SQLite

I am trying to add NeoSmart.Caching.Sqlite, with the following dependencies:

  • NeoSmart.Caching.Sqlite 5.0.2
  • Microsoft.Data.Sqlite.Core 5.0.8
  • SQLitePCLRaw.core 2.0.4
  • SQLitePCLRaw.bundle_green 2.0.7
  • SQLitePCLRaw.lib.e_sqlite3 2.0.7
  • SQLitePCLRaw.provider.e_sqlite3 2.0.7

The server has the following warning:

The package `SQLitePCLRaw.lib.e_sqlite3.2.0.4` doesn't support `netstandard2.1,netstandard2.0`

Which is true, because as I understand that package has the native libraries but does not have a TFM defined. How could this be solved? I tought that #90 would have solved this. I also expect that #109 will face the same problem with the SQLite dependencies.

Ability to install non-curated packages at own risk

Hello

This project peaks my interest because it can serve as a potential replacement for NuGetForUnity, which is nice since NuGetForUnity has been on life support for a while, and builds on top of the Unity package system with manifest.json, which unifies the experience of installing Unity and NuGet packages.

When I was trying it out just now, I ran into the notice that it's apparently just a curated list of packages. I understand this decision, and it's clearly documented in the README, but I was wondering if there would be a way to implement an "at your own risk" uncurated package import somehow, e.g. by using a special version number prefix or a different registry prefix such as org.nuget.uncurated or similar.

The reason I'm asking is because a curated list is always going to have to play catch-up to official NuGet packages, even if those are working without problems in Unity. For example, the small set of five packages (Microsoft.MixedReality.QR, FakeItEasy, and their dependencies) we need for our use case are not available in the curated list, but working fine in Unity. We could of course upstream these fairly easily, but we will be blocked again when we want to try out a NuGet package that we won't know yet is suitable for us in the future, and we can't easily test if they work properly in Unity without first including them through a package manager, which we can't with a curated list.

(Similarly, a related nice to have would be if we could use UnityNuGet to easily install NuGet packages from private NuGet registries. We can always self-host this project, but if it can automatically pull uncurated packages from the official NuGet registry, doing the same from a private registry is probably a small step, even if it requires self-hosting and configuring the target URL of the private registry.)

Roslyn analyzer support

It would be nice if we could use this with Roslyn Analyzers. If I have some free time I might look into it.

New tag

Hey. I'm not sure what the proper channel is for this, but could we have a new tag to get the new packages on the server?

Maybe you could add some hooks to automatically create new tags whenever you merge a PR?

Thanks a lot!

Newtonsoft JSON conflict with Unity's internal version

Hi,

I'm working on a project that uses Google APIs Core Client Library, that defines Newtonsoft JSON as a dependency from this registry, which is therefore installed automatically.

However, I've gone to add Unity's Localization package, which depends on Unity's internal Newtonsoft JSON. Therefore, I can't add it. Annoyingly they're the exact same version, but just from different places.

I figure there may be a lot of situations where Unity's internal version will conflict with this registry's version, is there a way forward that could resolve these conflicts nicely without having to resort to not using this registry for packages, perhaps defining the dependency on Unity's version instead?

New release?

When you get a chance, would you be able to push a new release of this repo to production? There've been some changes made since June that I'd like to take advantage of. Thank you!

4 components version numbers

@xoofx There are several packages like the following that have 4 components instead of 3. In our case we have been using this format for the upm package for a long time to solve this kind of packages:

major.minor.patch-revision

This is compatible with Unity (similar to 1.0.0-preview23 like Unity uses for previiew packages) and it allows to be seen in UPM window.

Are you open to this PR or do you have a better idea?

https://www.nuget.org/packages/Prism.Core/

System.Diagnostics.DiagnosticSource is empty

Import org.nuget.system.diagnostics.diagnosticsource, version 4.5.0 into a project and check out its directory in the package manager cache. You'll find that no DLLs are included, despite others depending on it.

Support editor only package

What do you think about following the idea?

Adding an option to registry.json. e.g., “editor": true.
To make the meta file, the set platform is editor only.

I think it can be useful for packages that do not work in standalone player.
e.g., Castle.Core

Missing dependencies for [email protected]

Got the following error message when trying to install [email protected].

[Package Manager Window] Unable to add package [[email protected]]:
Package [email protected] has invalid dependencies or related test packages:
org.nuget.system.runtime.interopservices (dependency): Package [[email protected]] cannot be found
UnityEditor.EditorApplication:Internal_CallUpdateFunctions () (at /Users/bokken/buildslave/unity/build/Editor/Mono/EditorApplication.cs:327)

Importer fails with status code 502

I noticed that some of users of my packages are unable to import Nuget packages correctly.

keijiro/Akvfx#7

It reproduced on my side by clearing the npm/package cache directory (AppData/Local/Unity/cache).

image

As far as I tried, this reproduces with all the packages in the registry.

Adding package does not make it available on C# IDE

Hello, sorry I don't think this is actually a bug but rather me not understanding how to use this.
I have:

  • added the corresponding scoped registry in the manifest file
  • opened package manager
  • located a specific package. Tried with:
    • Math.NET Numerics (NuGet)
    • System.Collections.Immutable (NuGet)
  • opened IDE (tried with both Rider and VS Code)
  • tried to import a class from the packages:
    • ImmutableList
    • DenseMatrix
  • none of the classes are being recognized in the IDE

Is there anything I'm missing?
thanks

Can't use NuGet packages with 4 (or more) dot version number

I tried out UnityNuGet, by running it locally, and adding dependencies for OPCFoundation.NetStandard.Opc.Ua.Client. This package has versions with 4 parts. For example the latest version is: 1.4.367.41. When trying to import it with the package manager, I get an error:

[Package Manager Window] Cannot perform upm operation: Unable to add package [[email protected]]:
  Package [email protected] has invalid dependencies or related test packages:
    org.nuget.opcfoundation.netstandard.opc.ua.configuration (dependency): Version '1.4.367.41' is invalid. Expected a 'SemVer' compatible value.
    org.nuget.opcfoundation.netstandard.opc.ua.core (dependency): Version '1.4.367.41' is invalid. Expected a 'SemVer' compatible value. [NotFound].
UnityEditor.EditorApplication:Internal_CallUpdateFunctions ()

Edit: Also i could not see any warning or error coming from the server.

Your feed (unitynuget-registry.azurewebsites.net) appears to be broken

All the API responses are returning

{"error":"not_initialized","reason":"The server is initializing (100.0% completed). Please retry later..."}

I'm going to assume something is wrong with the packages loading as it's stuck at 100%..

I'm not sure how long it's been like this, but if it fixes itself I'll come back to close this issue. I thought I'd let you know if that's not the case.

Lazy generation of packages

To focus the conversation generated at issue: #118:

Context: #118 (comment) #118 (comment)

I have been investigating and no hash appears in the -/all endpoint:

https://unitynuget-registry.azurewebsites.net/-/all

It does appear when you go to a specific package endpoint:

https://unitynuget-registry.azurewebsites.net/org.nuget.system.text.json

What is not possible is to generate the "shasum" field without having previously converted the package from NuGet to UPM and calculated the hash.

My doubt would be at what moment those endpoints and fields are consumed since that is in the internal implementation of the cli / frontend of the package manager.

Remove NET_STANDARD_2_0 from Define Constraints

Currently all package assembly have a NET_STANDARD_2_0 definition , which let unity reference them only when API compatibility level set to .NET Standard 2.0.

But .NET 4.x api level was compatible with .NET Standard 2.0, means if an assembly working under .NET Standard 2.0, it also working under .NET 4.x.

So there's no reason to limit packages to .NET Standard 2.0.

If you have some other thinking, please let me know, thanks.

Support for native libraries

I was thinking of adding a package that contains native libraries. It works well in Unity but requires modifying the .meta files so that they target the corresponding platform and architecture. Also, for Windows there might be two .dll files with the same name, one for x86 and one for x64. Only one should be enabled to work in the Editor.

I skimmed over the source code and it doesn't seem to be support for this, only for managed assemblies (I might be wrong).

Nuget supports these by placing them on specific folders, so the meta files can be adjusted depending on these folders, for example:
runtimes\win-x64\native\file.dll
runtimes\win-x86\native\file.dll
runtimes\osx-x64\native\file.dylib

Some more info here:
https://docs.microsoft.com/en-us/nuget/create-packages/supporting-multiple-target-frameworks

Assembly not be loaded due to mismatched assembly references version

Install [email protected].

Unity packman prompts:

Assembly 'Packages/org.nuget.system.memory/System.Memory.dll' will not be loaded due to errors:
System.Memory references strong named System.Buffers Assembly references: 4.0.2.0 Found in project: 4.0.3.0.
Assembly Version Validation can be disabled in Player Settings "Assembly Version Validation"

I checked that [email protected] depends on [email protected], and the System.Buffers.dll's assembly version is 4.0.3.0.

Disable Assembly Version Validation fixed the issue.

This is a problem?

Package resolution error

Package Manager fails to import packages via the UnityNuGet registry with the following error message.

Screenshot from 2020-11-05 21-36-46

I tested with Unity 2019.4 and 2020.1 (reproduced on both of them).

You have to clear the local package cache to reproduce the issue.

Unity not adding NET_STANDARD_2_0 define on UWP platform

On each *.dll there is a meta defining NET_STANDARD_2_0 constraint:

https://github.com/xoofx/UnityNuGet/blob/master/src/UnityNuGet/UnityMeta.cs#L41

When switching to UWP it doesn't add NET_STANDARD_2_0 define, it adds NET_4_6 instead and I have .NET Standard 2.0 scripting backend set. According to this page it should be added:

https://docs.unity3d.com/Manual/PlatformDependentCompilation.html

On each *.dll file In define constraints there is a red icon saying that define constraint is incompatible. Same goes to *.csproj files, it doesn't include NET_STANDARD_2_0 define.

I tried to workaround it by adding a "csc.rsp" file with -d:NET_STANDARD_2_0 but it only works for *.csproj files (it includes correctly that define) but with *.dll files I still get that red icon saying that define constraint is incompatible.

I have reported it to Unity @xoofx maybe you can pull some strings (Case 1334636).

For now I think there is not much to do despite of copying packages from Library/PackageCache to Packages and remove manually that define constraint on each *.dll file.

Edit: https://issuetracker.unity3d.com/issues/uwp-not-adding-net-standard-2-0-define

Package registry down?

We are receiving 503 errors when trying to resolve or list packages in the registry:

[Package Manager Window] Request [GET https://unitynuget-registry.azurewebsites.net/-/v1/search?text=org.nuget&from=0&size=250] failed with status code [503]

[Package Manager Window] Cannot perform upm operation: Request [GET https://unitynuget-registry.azurewebsites.net/-/v1/search?text=org.nuget&from=0&size=250] failed with status code [503] [NotFound].
 An error occurred while resolving packages:
   Package [email protected] has invalid dependencies or related test packages:
     org.nuget.system.memory (dependency): Request [GET https://unitynuget-registry.azurewebsites.net/org.nuget.system.memory] failed with status code [503]
   Package [email protected] has invalid dependencies or related test packages:
     org.nuget.system.buffers (dependency): Request [GET https://unitynuget-registry.azurewebsites.net/org.nuget.system.buffers] failed with status code [503]
     org.nuget.system.numerics.vectors (dependency): Request [GET https://unitynuget-registry.azurewebsites.net/org.nuget.system.numerics.vectors] failed with status code [503]
     org.nuget.system.runtime.compilerservices.unsafe (dependency): Request [GET https://unitynuget-registry.azurewebsites.net/org.nuget.system.runtime.compilerservices.unsafe] failed with status code [503]

Is it having some trouble?

Will this cause problems with unity package manager?

There's a websocket package I need and apparently I can download it through this manager.
Will installing this package manager conflict with the existing unity package manager?
If so, is there a way to install external packages using UPM?

New tag?

Hello. Haven't had a new tag in almost a month as far as I can tell. I would like to use some of the new packages. Could we have the server restarted? Thanks.

Also I'm sorry I have to pester the maintainers through issues like this, I'm not sure how else to request a server-update.

Support packages with only preview versions

I figured I'd open this issue since there isn't one for it yet.

I'd like to be able to use Microsoft.Bcl.HashCode through this service until .NET Standard 2.1 rolls out and makes its way into Unity. Currently that cannot be done as it only has preview versions.

Is there any major issue currently blocking the support of these kinds of packages?

About Asmodat.Standard (package version ranges)

@xoofx I have seen this commit and its reasoning:

741d1a7

I understand but we should avoid breaking changes as big as removing packages from the registry that projects currently depend on.

We could create:

  1. simple case, array of supported versions:
"Asmodat.Standard.SSH.NET": {
    "listed": true,
    "version": "1.0.0.1",
    "supportedVersions": [
      "1.0.0.1"
    ]
},

Cons: having to maintain it manually

  1. More advanced case, support ranges of versions:

https://docs.microsoft.com/en-us/nuget/concepts/package-versioning#version-ranges

Cons: Understanding the syntax of NuGet version ranges

Can add notice into "description" element in package.json

Now, can not notice for user.
It would be better to be able to add the information to package.json rather than writing it in the this repo's README.

I will show the following informations:

  • NUnit.Analyzers must be installed in different versions depending on the Unity editor version.
  • Castle.Core v5 will not work with less than Unity 2021.2

refs #120 #156

Repository fails with an HTTP 500

The repository seems to be live, but broken. Navigating to any URL (including to download packages) returns a 500. Here's the result of accessing https://unitynuget-registry.azurewebsites.net:

HTTP Error 500.30 - ANCM In-Process Start Failure

Common solutions to this issue:

  • The application failed to start
  • The application started but then stopped
  • The application started but threw an exception during startup

Troubleshooting steps:

  • Check the system event log for error messages
  • Enable logging the application process' stdout messages
  • Attach a debugger to the application process and inspect

For more information visit: https://go.microsoft.com/fwlink/?LinkID=2028265

Dependencies similar to Binding redirects

Conversation derived form protobuf-net/protobuf-net.Grpc#263

So, by what you say @xoofx you mean doing something along the lines of:

{
    "protobuf-net": {
        "listed": true,
        "version": "3.0.0"
    },
    "protobuf-net.Core": {
        "listed": true,
        "version": "3.0.0"
    },
    "protobuf-net.Grpc": {
        "listed": true,
        "version": "1.0.0",
        "dependencyOverrides": {
            "protobuf-net": "3.0.0"
        }
    }
}

Override 2.4.0 dependency from the following link with 3.0.0: https://www.nuget.org/packages/protobuf-net.Grpc/1.0.0#dependencies-body-tab

So the idea is that in all versions from 1.0.0.0 onwards of protobuf-net.Grpc if the protobuf-net dependency is found in a version lower than the one defined in the "dependencyOverrides" section it overwrites it with the one defined in that section so that it works like the binding redirects, no?

Adding this functionality opens doors to add packages that had invalid dependencies and we could not add until now.

Sometimes I have the feeling that I spend a lot of time contributing to this project through PRs but the reality is that for developers like me who work in companies with products and are tied to LTS versions of Unity, CoreCLR, Unity SDK style csprojs, etc. are a long way off. We are talking about if hopefully it gets in 2024.x until 2025 it would not be in the LTS.

UnityNuGet is a huge salvation for those of us who are doing complex developments that require multiple NuGet packages and by the nature of being products require to be updated periodically and it doesn't work with updating hundreds of dlls by hand dragged into /Assets.

So thanks for that @xoofx and good luck with all the work you have together with @joshpeterson and the rest of the team to bring us the best of the .NET ecosystem.

.Net Standard 2.1 and org.nuget.system.runtime.compilerservices.unsafe

I noticed some packages (maybe all) have been added NET_STANDARD_2_0 in Define Constraints. This is good for packages like system.memory to avoid conflict with .a Net Standard 2.1 profile which shipped with Unity 2021.2.

image

However, today I tracked a package org.nuget.system.runtime.compilerservices.unsafe, which has been removed from the unity profiles

Seems for org.nuget.system.runtime.compilerservices.unsafe it needs to remove the NET_STANDARD_2_0 to make it both work with Net Standard 2.0 and Net Standard 2.1.

I also noticed #52, suggesting removing NET_STANDARD_2_0 from all packages, this shouldn't be applied to packages like system.memory and perhaps other packages that are not compatible with Unity's .net standard 2,1 profile.

The dlls conflict with the ones present in other packages

you must be aware of this

E:/Archive/Prgdir/Svelto/Svelto.MiniExamples/Example1-DoofusesMustEat/Iteration2-Burst/Library/PackageCache/[email protected]/System.Runtime.CompilerServices.Unsafe.dll, E:/Archive/Prgdir/Svelto/Svelto.MiniExamples/Example1-DoofusesMustEat/Iteration2-Burst/Library/PackageCache/[email protected]/System.Runtime.CompilerServices.Unsafe.dll

however I have noticed that burst also uses Unsafe.dll, I am not sure how it doesn't conflict in that case

Support for Standard 2.1?

I see that the readme says that a nuget package should include standard2.0 but is there plans to add support for standard2.1? Since the engine is updating to support it.

[Question] Adding new packages

When adding new packages to the curated list, do we also have to manually add the dependencies, or does the service automatically add those to the curated list as well?

Add info about server-update to readme

As I understand it, based on #56, the registry is uploaded to the server manually by @xoofx once in a while. I also found the CI pipeline which seems to contain steps to publish to the server, but skipped them for my pull-request. I am now a little unsure on how and when the server is updated.

Could we add some info about this to the FAQ section in the readme?

Thanks!

Same name DLL collisions

Im using UnityNuGet over OpenUPM to import one of my packages.

The imported package contains two DLLs, one for .netstandard 2.1 and one for 2.0. They have correct constraints set so only one is ever actually built depending on the unity version.

However as can be seen in this unity issue and other ones, there is currently a bug which prevents building to android (and i believe anything other than standalone) because of name conflicts.

The DLL plugin-conflict resolver does not understand that one of these DLLs will not be included and fails the build because the DLLs have the same name.

The generation of the multiple DLLs is part of this service correct? If so, could we add a flag to the registry to only build .netstandard 2.0 instead of both? An other option would be to add the .netstandard version (2.0 or 2.1) to the end of the DLL name in order to make their names different.

CaSe sensitivity?

Your curated list shows Scriban (capital S), for example, but your README shows org.nuget.scriban. Does this mean everything is lowercase? camelCase? Can this be clarified? Shouldn't the curated list reflect the same style casing?

For example, is Microsoft.Extensions.Primitives written as org.nuget.microsoft.extensions.primitives?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.