Skip to content

Add TaskExtensions to compiler package#26703

Merged
jasonmalinowski merged 1 commit intodotnet:masterfrom
genlu:addTaskExtensions
May 8, 2018
Merged

Add TaskExtensions to compiler package#26703
jasonmalinowski merged 1 commit intodotnet:masterfrom
genlu:addTaskExtensions

Conversation

@genlu
Copy link
Copy Markdown
Member

@genlu genlu commented May 8, 2018

Add System.Threading.Tasks.Extensions to compiler package.

We see an RPS regression in this insertion PR, which is caused by jitting MS.CA.CSharp (in VBCSCompiler process). Further investigation shows that binding for native image for that assembly failed because of

  Dependency name: System.Threading.Tasks.Extensions, Version=4.1.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL
  WRN: Cannot load IL assembly. (hr = 0x80070002).

@genlu genlu requested a review from a team as a code owner May 8, 2018 00:24
@genlu
Copy link
Copy Markdown
Member Author

genlu commented May 8, 2018

FYI @jasonmalinowski @dotnet/roslyn-infrastructure @dotnet/roslyn-compiler

@jasonmalinowski
Copy link
Copy Markdown
Member

FYI to @jaredpar and @sharwell -- we really need to fix the tooling here...

@jasonmalinowski jasonmalinowski merged commit 402627b into dotnet:master May 8, 2018
file source=$(OutputPath)\Vsix\CompilerExtension\System.Security.Cryptography.X509Certificates.dll vs.file.ngenArchitecture=all
file source=$(OutputPath)\Vsix\CompilerExtension\System.Security.Principal.Windows.dll vs.file.ngenArchitecture=all
file source=$(OutputPath)\Vsix\CompilerExtension\System.Text.Encoding.CodePages.dll vs.file.ngenArchitecture=all
file source=$(OutputPath)\Vsix\CompilerExtension\System.Threading.Tasks.Extensions.dll vs.file.ngenArchitecture=all
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is suspicious to me. The CompilerExtension is largely a F5 tool for the Roslyn team. It shouldn't be impacting NGEN in any way that I understand.

Yes the set of binaries listed here are also included in both our VS and MSBuild installations. Are we using this extension as a convenient place to list binaries that should be NGEN'd elsewhere in our code.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This isn't ngen only: this is what is deployed in our actual setup. The ngen is secondary. CompilerExtension is hijacked as the source of dependencies to deploy, by taking advantage of nuget resolution to pick the right runtime assets.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Where does this get deployed? Up until now I've thought of CompilerExtension as our little F5 toy. If there is product impact then I'd like to understand it better.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The .swr here being modified is payload being installed during a real VS install on customer machines. Since that needs a source of NuGet-provided dependencies, rather than hard-coding paths into the NuGet packages or trying to reinvent the wheel, the "solution" used is to take the binaries out of CompilerExtension so the same binaries are being shipped in both places.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If that is the intent then I wonder if we should switch to generating this file as we do for the portable facades. This would save us from making this mistake in the future. It's also quite definitive vs. the facades which is more of a hueristic.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You could. It might also be possible to actually make CompilerExtension work in both. There are some differences today (the extension has the package that forces it to load during design time), but maybe there's some way to refactor this to avoid the duplication.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we are missing this file in at least one other place: VS.Tools.Roslyn.nuspec file we generate doesn't have this file either. Presumably this will block any toolset insertion.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@genlu genlu deleted the addTaskExtensions branch May 8, 2018 17:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants