-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
'dotnet store' can't find crossgen with .NET 6 #24752
Comments
I couldn't figure out the best area label to add to this issue. If you have write-permissions please help me learn by adding exactly one area label. |
Some old comments seem to suggest that this functionality is no longer needed with the move to shared frameworks as the unit of deployment - by adding a In either case, we should either research and remove the explicit requirement for crossgen here, or condition it based on the version of the runtime assets in use - from some quick investigation it looks like we still bundled it in the 5.x versions of this package, so the constraint should be a semver comparison with 6.0.0 as the lower bound I guess. @marcpopMSFT thoughts on that? |
@baronfel do you have a link to documentation for the mentioned Our use case is shown here in the Lambda Layers CLI PublishLayers command. |
@Beau-Gosse-dev The primary design is here, I believe. @richlander do you have an opinion on the way forward for folks that rely(ied) on the Runtime Store? Should we be guiding them to FrameworkReferences? |
Additionally.. After getting around using the --skip-optimization flag for a dotnet 6 console app, publishing against the generated manifest doesn't seem to be working either. Sample app: To reproduce:
Expectation - Hello World ! on console. |
@richlander any advice on this? |
The For now, it seems like you have a workaround. Is that good enough? We have started to talk about the shared library scenario, however, we don't have a spec on that yet. Once I've written a spec on it, It would be great to get feedback from your team. |
Is this to me ? Or @Beau-Gosse-dev ? |
Well, really anyone, but I meant @Beau-Gosse-dev. |
@richlander I would be interested in that spec. It sounds like our AWS Lambda feature relying on store's ability to do assembly optimization doesn't have any path forward right now is that correct? It is not one of our most widely known features but people that knew about it really like it and we have been wanting to make the feature more widely known. |
KnownFrameworkReference vibes. |
I wrote this brain-dump on shared libraries last summer: https://github.com/dotnet/designs/blob/shared-libraries/accepted/2021/shared-libraries.md. It's just a branch I pushed. Nothing more has happened on it. I didn't even re-read it just now so I hope it is semi-coherent. I'll let @baronfel speak to the current status |
@richlander Our team is incredibly interested in something like the dotnet package store. Our use case is, we have software that is installed on servers with the caveat that they may or may not be beyond our control. Therefore, we cannot just "containerize" to solve all of our problems. Likewise, we cannot make a requirement that the dotnet runtime be pre-installed on the system, for reasons beyond the scope of this issue. But finally, packing a self-contained app costs 100mb at a minimum, and we're splitting our software into microservices, which will not scale well when each app costs a minimum of 100mb, along with all of the other software requirements. So what we're looking into is shipping the standalone dotnet runtime binary, and using that to run the application. In order to reduce the storage of our application, we were hoping to ship all of the nuget packages and internal libraries to a dotnet runtime store, and if we needed to patch a piece of software, we could overwrite that library within the package store for all apps, or overwrite that library in the local repo for a single application being updated. What's the status on whether an optimization like this will be allowed in the future? |
There's a lot of moving parts there. The only thing I could see us working on in the near future (read: .NET 10) would be a feature that allows you to "build your own" shared framework, like Microsoft.AspNetCore.App or Microsoft.NetCore.App. These are effectively groups of assemblies that ship with the runtime. When users building framework-dependent apps reference those shared frameworks they don't get DLLs copied to their output. Instead, the SDK assumes that the framework will be available on the machine installation whenever they deploy, and it will pick those DLLs from the shared framework during run time. This is along the same lines as what @richlander posted above. The challenge with this feature set that it is going to require significant design and implementation in both the .NET SDK and the .NET runtime.
I don't think we will ever support something like this. Updating individual DLLs is something that we've stopped supporting on moving to .NET Core. Updating the shared framework would involve redeploying the whole thing, then copying the changed files over. |
@agocke, is that policy specifically for .NET SDK (e.g. trimming during |
I find it really cool how easy it is for someone to build their own Benefits include:
|
It’s not that we specifically ban handling DLLs, it’s that the shared framework is not distributed as individual DLLs. We don’t support shipping or updating them individually |
Not in an official way no, but it is possible for one to copy & paste the updated dlls into the folder manually though. |
Describe the bug
Calling 'dotnet store' on a package store manifest throws error that it can't find crossgen, since crossgen is not included in the tools directory of .NET 6.0.3
To Reproduce
dotnet store --manifest packages.csproj --framework net6.0 --runtime win-x64
--skip-optimization
to command and it will workExceptions (if any)
Further technical details
Results of
dotnet --info
The text was updated successfully, but these errors were encountered: