Skip to content
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

The SDK should include runtimes common native tools #8057

Open
4 tasks
Petermarcu opened this issue Apr 2, 2017 · 19 comments
Open
4 tasks

The SDK should include runtimes common native tools #8057

Petermarcu opened this issue Apr 2, 2017 · 19 comments
Assignees
Milestone

Comments

@Petermarcu
Copy link
Member

There are many tools that we had with .NET Framework's SDK that would be useful to also include in the .NET Core SDK. This list is not exhaustive and we can add to it but I have heard requests for each:

  • fuslogvw (something to see assembly binding logging)
  • ildasm
  • ilasm
  • crossgen
@Petermarcu
Copy link
Member Author

@gkhanna79 @RussKeldorph

@gkhanna79
Copy link
Member

ILAsm/ILDasm/Crossgen are native tools and bundling them would make CLI platform specific (as opposed to the portable app it is right now). Given that, are you suggesting CLI all possible flavors of it?

Something that I have suggested in the past is for CLI to restore the required tools, from the CoreCLR nuget packages, corresponding to the RID of the platform CLI is running on.

Also, what is the user story for carrying them? How are they being exposed via CLI or is the intent to simply carry them and let users figure it out? It will be great if you can elaborate on some of these @Petermarcu.

CC @livarcocc @eerhardt @bleroy

@dasMulli
Copy link
Contributor

dasMulli commented Apr 3, 2017

Global tools (via nuget) would come in handy here..

@Petermarcu
Copy link
Member Author

The SDK is built for a specific arch/platform. It has to be because it crossgen's things in it. These would just be more platform specific native components.

@gkhanna79
Copy link
Member

In that case, SDK should be able to extract the crossgen from CoreCLR package and use the corresponding ILAsm/ILDasm packages to get the respective binaries.

There is no FusLogVw equivalent in .NET Core - the corresponding approach is to use COREHOST_TRACE=1 that displays equivalent information.

@dasMulli
Copy link
Contributor

dasMulli commented Apr 3, 2017

These would just be more platform specific native components.

Those would be specific to the runtime that the SDK is built for, right? So i won't be able to crossgen a .net core 2.0 dll if i use an sdk that uses a 2.1.0-somthing runtime, with a released 2.0 runtime being installed as well.

@eerhardt
Copy link
Member

eerhardt commented Apr 3, 2017

Does ilasm and ildasm work on OSX and Linux?

@RussKeldorph
Copy link

RussKeldorph commented Apr 3, 2017

@eerhardt Yes, though, some work is needed to clean up the packages. We're willing to do that work, though we could use help determining exactly what needs to happen to best integrate with the CLI.

Edit: "CLI" -> "CLI and/or SDK"

@gkhanna79
Copy link
Member

So i won't be able to crossgen a .net core 2.0 dll if i use an sdk that uses a 2.1.0-somthing runtime, with a released 2.0 runtime being installed as well.

Our current design will allow this to work, though any enhancements that we may have made in precompilation process unique to 2.1.0 may not get recognized by 2.0 runtime, resulting in JITting of the code.

@livarcocc
Copy link
Contributor

cc @richlander we need to figure out how we want to do this. For instance, should we just carry the executables and let the user figure out how to find it? Should we put all these native tools in a particular folder under the SDK folder? Should we add this to the PATH? As part of first run? Only for installers?

@omajid
Copy link
Member

omajid commented Apr 4, 2017

Also may be worth considering making these dotnet subcommands.

  • dotnet ilasm
  • dotnet crossgen

And so on.

@eerhardt
Copy link
Member

eerhardt commented Apr 4, 2017

I'll echo @dasMulli's excellent point above:

Global tools (via nuget) would come in handy here..

@natemcmaster
Copy link
Contributor

Global tools (via nuget) would come in handy here..

+1 like 1000x. Trying to 🔮 a list of all tools users might want is like whacking at the branches of the problem; acquisition for dotnet commands is the root issue.

FYI - DotNetCliToolReference is so riddled with problems that I've given up on creating new dotnet subcommands.

@ViktorHofer
Copy link
Member

ViktorHofer commented Sep 21, 2017

csc, vbc, ilasm - https://github.com/dotnet/cli/issues/7689

@stevenaw
Copy link

I came across this issue while searching for a relatively out-of-the-box way to use ilasm/ildasm via cli on .net core. I see a few ideas were suggested in the past. What's the current recommendation on how a developer could do this?

@omajid
Copy link
Member

omajid commented Feb 22, 2019

I use dotnet tool install -g dotnet-ildasm which is https://github.com/pjbgf/dotnet-ildasm

Edit: just to be clear, this is not an official recommendation. Just a personal opinion.

@stevenaw
Copy link

Thanks @omajid I'll give that a try

@RussKeldorph
Copy link

@cshung

@mletterle
Copy link

I've had success with manually downloading the runtime nuget packages for ildasm/ilasm and CoreClr and making sure they're all in the same directory, and I know there's upcoming updates to remove the CoreClr requirement.. would really like to see a global tool for this, it's a little surprising that they're not included with the SDK honestly.

@msftgits msftgits transferred this issue from dotnet/cli Jan 31, 2020
@msftgits msftgits added this to the Backlog milestone Jan 31, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests