I have authored a package (LoremIpsum) for sublime text 2, and submitted it to the package control list. It has been working fine, and I can see 10K+ people installed the package (on the community packages list). I have now updated it, and don't know how to inform the package control list.
Originally, I forked the package control list, added my package, and sent a pull request. I can not do that now, as I have no changes to make to the list - I just need to inform it that my package has updated (or do I? Does this happen automatically somehow?)
What should I do to make my updated version of the package available? How can I check that the correct version is published - and accessible?
You don't have to do anything. Package Control will grab the latest from your repository. Though if you added a custom packages.json file you will need to update that also.
Also, on the community packages list you can look at the version date (at v2013.01.20.07.51.55 at the time of writing this). When it "updates", the version number will be updated.
Edit:
Side note, you should add *.pyc to your .gitignore
Related
I decided to try out the new unity dots system, or, the new entities package (as well as the hybrid renderer), but I can't find the package in the package manager with preview packages enabled. After looking it up, I could not find any resources, other than one that told me that they moved some of the preview packages out of the package manager, and somewhere else. Does anyone have any idea where it could be?
This is what it looks like on my screen by the way:
From Entity Component System - DOTS Project Setup
Starting with Unity 2020.1, the DOTS packages are not listed in the package manager, even when preview packages are enabled. There are two alternative options to install those packages:
You can use "Add package from git URL..." under the + menu at the top left of the package manager to add packages either by name (such as com.unity.entities), or by git URL (but this option isn't available for DOTS packages). Note that it might take a few moments before the package starts installing.
Alternatively, you can add DOTS packages by directly editing the Packages\manifest.json file in your project. This file requires not only the package name but also a version which can be found by looking at the documentation of each package (such as "com.unity.entities" : "x.x.x-preview.x").
For example currently it would be com.unity.entities" : "0.17.0-preview.41"
And
Follow the link for more information about installing hidden packages.
Maybe also interesting for you:
The recommended set of core packages to be added to a DOTS project is:
com.unity.entities
com.unity.rendering.hybrid
com.unity.dots.editor
We currently don't use nuget for our dependencies, preferring to go old-skool way and stick them all in a libs folder and reference from there. I know. So 1990's.
Anyway, nuget has always made me feel a bit queasy... you know, reliance on the cloud and all that. As such, I'm find myself in the main agreeing with Mark Seeman (see here: http://blog.ploeh.dk/2014/01/29/nuget-package-restore-considered-harmful/) who says:
Personally, I always disable the feature and instead check in all packages in my repositories. This never gives me any problems.
Trouble is, this has changed in version 3, you can't store packages alongside the solution, as outlined here: https://oren.codes/2016/02/08/project-json-all-the-things/. Which sorta screws up checking them into source code.
So, am I worrying about nothing here? Should I drink from the nuget well, or side with Mr Seeman and er on the side of caution?
Storing NuGet packages in source control is a really, really bad idea.
I accidentally did it once and I ended up bloating my source code considerably, and that was before .NET Core...
Drink deep from the NuGet well. Most software components are packaged in a similar way these days (NPM, Bower etc). The referenced blog post is two years old and package management is changing rapidly in the .NET world, so here's some of my experience lately.
NuGet packages can't be deleted from nuget.org. They can be hidden,
but if your application requests a hidden package it will download it
as normal. It'll never disappear into the void.
'Enable Package Restore' is no longer glitchy because it's now a default option in NuGet 2.7+. You have no choice anymore.
Packages are no longer stored per solution but per machine, which will save a ton of bandwidth and will decrease the initial fetch period when building.
If you build a new project using .NET Core, you will have dozens more packages as the entire BCL will be available as NuGet packages. Do you really want to check-in all the System.* packages into source code?
There is a very simple reason why you want to store Nuget packages in source control. Your organization doesn't want your build server to have internet access.
I've created a folder on my C:\packages. Inside I've created two packages with identical Ids but have different versions. I the use Nuget.Core to create a LocalPackageRepository pointing to this directory.
When I query for the packages using respository.FindPackages("myId")both packages are correctly returned by the service. However, the IsLatestVersion is true for both packages, even though their versions are clearly different.
Things I've tried:
I know these packages dicovered as OptimizedZipPackages looking through the source here, I cant find anything relevant to suggest an issue with the implementation.
I added the local repository to my Visual Studio NuGet feed manager. When I query that service, the latest version is shown.
Something seems to be wrong with how I've either created the packages, instantiated the repository, or its a bug in the library.
Using NuGet Core v2.8.60318.667
Looking at the source code the LocalPackage always returns true for IsLatestVersion if the NuGet package is not a pre-release.
In Visual Studio what happens is that the list of packages is further filtered by removing all but the latest version in the list so you only ever see the latest version. One way to do this is to use extension methods included in NuGet:
packages.DistinctLast<IPackage>(PackageEqualityComparer.Id);
The DistinctLast method assumes that the same NuGet package id will appear together in the list otherwise it will not filter them correctly.
I believe you could also use the AsCollapsed extension method which is similar to the above. It basically does:
packages.DistinctLast<IPackage>(PackageEqualityComparer.Id, PackageEqualityComparer.Version);
I am wondering whether it is possible to update package that was installed with /x flag?
For me it seems that it is not possible right now. What I mean by updating is making packages.config change with greater version of given package (done by nuget.exe update SolutionName.sln)
What is the flow of update operation? Does it look inside nupgk of actually installed package? Or it just search for version within directory name?
When version in directory name is missing is there a problem with version comparison?
I need precise explanation.
Note:
I use nuget 2.8.50224.430
I created identical thread on nuget codeplex here:
https://nuget.codeplex.com/discussions/543299
I think I managed to answer my own question.
While waiting for response I decided to look at nuget.exe sources and find how is version from installed package gathered.
What I realized:
1. Version is taken directly from packages.config.
2. nuget update command looks for PackageName.PackageVersion.nupkg in packages directory.
3. When wanted file does not exists, update cannot be completed (it is aborted).
I tried to change code to use directory and package name without version.
It is possible but it will be better to request another flag for that purpose.
For curious: PathResolver is created in UpdateCommand.cs
var pathResolver = new DefaultPackagePathResolver(sharedRepositoryFileSystem);
You can pass false as second argument to omit version in path concatenation.
I've installed the latest AjaxControlToolkit and everything's working fine and dandy.
When I go to check-in my changes none of the ACT stuff is ticked for check-in but any pages I have edited have been ticked.
Is there a specific reason for this? Should I not check it in?
Possibly some quirk of your source control provider.
Personally, I like to include everything (non-standard) required to build the solution in SVN.
For AjaxControlToolkit, I use Nuget.exe, packages.config containing a line relating to a specific version of AjaxControlToolkit, and a pre-build event to automate downloading the correct version of the toolkit just before the build.
This way, you get to tie a specific revision of your work in source control to a specific version of the toolkit, without having to check binaries in to source control (bad practice).