Refactor out TargetFramework concept from Microsoft.Interop.SourceGeneration - #92301

Merged
jkoritzinsky merged 3 commits into
dotnet:mainfrom
jkoritzinsky:disable-runtime-marshalling-stub-env
Sep 22, 2023
Merged

Refactor out TargetFramework concept from Microsoft.Interop.SourceGeneration#92301
jkoritzinsky merged 3 commits into
dotnet:mainfrom
jkoritzinsky:disable-runtime-marshalling-stub-env

Conversation

@jkoritzinsky

Copy link
Copy Markdown
Member

Refactor the concept of TargetFramework out of Micrsoft.Interop.SourceGeneration. Replace it with a CodeEmitOptions struct for us to introduce emit switches based on TFM features (in particular, the ability to skip initialization of locals was only introduced in .NET 5, so we need to have a switch for it). As all other use cases of the TFM are downlevel-support-specific in LibraryImportGenerator, move the TFM types into LibraryImportGenerator.

@ghost

Copy link
Copy Markdown

Tagging subscribers to this area: @dotnet/interop-contrib
See info in area-owners.md if you want to be subscribed.

Issue Details

Refactor the concept of TargetFramework out of Micrsoft.Interop.SourceGeneration. Replace it with a CodeEmitOptions struct for us to introduce emit switches based on TFM features (in particular, the ability to skip initialization of locals was only introduced in .NET 5, so we need to have a switch for it). As all other use cases of the TFM are downlevel-support-specific in LibraryImportGenerator, move the TFM types into LibraryImportGenerator.

Author:jkoritzinsky
Assignees:-
Labels:

area-System.Runtime.InteropServices

Milestone:9.0.0

@jkoritzinsky
jkoritzinsky merged commit f42ae88 into dotnet:mainSep 22, 2023
@jkoritzinsky
jkoritzinsky deleted the disable-runtime-marshalling-stub-env branch September 22, 2023 16:02
@filipnavara

Copy link
Copy Markdown
Member

I started getting a wall of errors on dotnet/runtime builds today:

CSC : error CS8784: Generator 'VtableIndexStubGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AppleAppBuilder/AppleAppBuilder.csproj]
CSC : error CS8784: Generator 'JSExportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AppleAppBuilder/AppleAppBuilder.csproj]
CSC : error CS8784: Generator 'JSImportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AppleAppBuilder/AppleAppBuilder.csproj]
CSC : error CS8784: Generator 'LibraryImportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AppleAppBuilder/AppleAppBuilder.csproj]
CSC : error AD0001: Analyzer 'Microsoft.Interop.Analyzers.ConvertToLibraryImportAnalyzer' threw an exception of type 'System.TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFrameworkSettings' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.'. [/Users/filipnavara/Projects/runtime/src/tasks/AppleAppBuilder/AppleAppBuilder.csproj]
CSC : error CS8784: Generator 'VtableIndexStubGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AotCompilerTask/MonoAOTCompiler.csproj::TargetFramework=net8.0]
CSC : error CS8784: Generator 'JSExportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AotCompilerTask/MonoAOTCompiler.csproj::TargetFramework=net8.0]
CSC : error CS8784: Generator 'JSImportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AotCompilerTask/MonoAOTCompiler.csproj::TargetFramework=net8.0]
...

Could it be related?

@filipnavara

Copy link
Copy Markdown
Member

Apparently the errors went away after the next arcade version bump commit... I just happened to land in the window in-between. Sorry for the noise.

@jkoritzinsky

Copy link
Copy Markdown
MemberAuthor

Any chance you can send me the commit sha that failed? And did this fail in VS or on the command line? We shouldn't be hitting failures like that ever.

@filipnavara

Copy link
Copy Markdown
Member

Any chance you can send me the commit sha that failed?

It was 24ead90 but I cannot reproduce it anymore.

I simply woke up and tried to run ./build.sh on something that worked the day before. The only reasonable explanation is that something got restored from NuGet that caused the breakage.

@filipnavara

filipnavara commented Sep 24, 2023

Copy link
Copy Markdown
Member

Not sure what is going on but it started happening again... commit bbe5c66, macOS, running

./build.sh
./dotnet.sh test src/libraries/System.Formats.Cbor/tests -f net9.0

The build passed, but the second command did not:

CSC : error CS8784: Generator 'VtableIndexStubGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/libraries/Common/tests/TestUtilities/TestUtilities.csproj::TargetFramework=net8.0]
CSC : error CS8784: Generator 'JSExportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/libraries/Common/tests/TestUtilities/TestUtilities.csproj::TargetFramework=net8.0]
CSC : error CS8784: Generator 'JSImportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/libraries/Common/tests/TestUtilities/TestUtilities.csproj::TargetFramework=net8.0]

...and now any subsequent attempt to build (even just ./build.sh) fails.

Yesterday I deleted the full NuGet cache and dotnet installation. If you have any tips how to analyze this I would certainly appreciate it.

I had a theory why is it happening (semi-)randomly... I tend to have the root of the repository opened in VS Code, and I have the C# and C# Dev Kit extensions installed there. I though it may trigger some kind of restore that brings the repository into uncompilable state. However, closing VS Code and cleaning the repo and NuGet cache didn't help.

@filipnavara

Copy link
Copy Markdown
Member

...and the problem is gone again after machine restart. Could it be MSBuild node reuse (or Roslyn process sharing?) kicking in and hitting a shared process that has a wrong version of the library already loaded?

@jkoritzinsky

Copy link
Copy Markdown
MemberAuthor

I think node reuse might be the problem, but the builds should be isolated. If it happens again, can you email me a binlog at the email in my profile?

@filipnavara

Copy link
Copy Markdown
Member

I think node reuse might be the problem, but the builds should be isolated. If it happens again, can you email me a binlog at the email in my profile?

Sure. I tried to disable MSBuild node reuse to no effect, so I am leaning towards putting the blame on Roslyn Compiler Server. Running killall dotnet was enough to bring everything back to normal, so I use it to unblock my flow.

@ericstj

Copy link
Copy Markdown
Member

This appears to be happening because other analyzers build using the SDK's ref-pack:

<!-- Inbox analyzers shouldn't use the live targeting / runtime pack. They better depend on an LKG to avoid layering concerns. -->
<UseLocalTargetingRuntimePackCondition="'$(IsNETCoreAppAnalyzer)' == 'true'">false</UseLocalTargetingRuntimePack>

But they aren't doing anything to disable the generators from that. So the roslyn process gets a mix of the LKG generators and live built generator assemblies in process.

I think the fix here is to disable all the generators from the ref-pack.

@ghostghost locked as resolved and limited conversation to collaborators Oct 26, 2023
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@jkoritzinsky@filipnavara@ericstj@AaronRobinsonMSFT
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Refactor out TargetFramework concept from Microsoft.Interop.SourceGeneration - #92301

Merged
jkoritzinsky merged 3 commits into
dotnet:mainfrom
jkoritzinsky:disable-runtime-marshalling-stub-env
Sep 22, 2023
Merged

Refactor out TargetFramework concept from Microsoft.Interop.SourceGeneration#92301
jkoritzinsky merged 3 commits into
dotnet:mainfrom
jkoritzinsky:disable-runtime-marshalling-stub-env

Conversation

@jkoritzinsky

Copy link
Copy Markdown
Member

Refactor the concept of TargetFramework out of Micrsoft.Interop.SourceGeneration. Replace it with a CodeEmitOptions struct for us to introduce emit switches based on TFM features (in particular, the ability to skip initialization of locals was only introduced in .NET 5, so we need to have a switch for it). As all other use cases of the TFM are downlevel-support-specific in LibraryImportGenerator, move the TFM types into LibraryImportGenerator.

@ghost

Copy link
Copy Markdown

Tagging subscribers to this area: @dotnet/interop-contrib
See info in area-owners.md if you want to be subscribed.

Issue Details

Refactor the concept of TargetFramework out of Micrsoft.Interop.SourceGeneration. Replace it with a CodeEmitOptions struct for us to introduce emit switches based on TFM features (in particular, the ability to skip initialization of locals was only introduced in .NET 5, so we need to have a switch for it). As all other use cases of the TFM are downlevel-support-specific in LibraryImportGenerator, move the TFM types into LibraryImportGenerator.

Author:jkoritzinsky
Assignees:-
Labels:

area-System.Runtime.InteropServices

Milestone:9.0.0

@jkoritzinsky
jkoritzinsky merged commit f42ae88 into dotnet:mainSep 22, 2023
@jkoritzinsky
jkoritzinsky deleted the disable-runtime-marshalling-stub-env branch September 22, 2023 16:02
@filipnavara

Copy link
Copy Markdown
Member

I started getting a wall of errors on dotnet/runtime builds today:

CSC : error CS8784: Generator 'VtableIndexStubGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AppleAppBuilder/AppleAppBuilder.csproj]
CSC : error CS8784: Generator 'JSExportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AppleAppBuilder/AppleAppBuilder.csproj]
CSC : error CS8784: Generator 'JSImportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AppleAppBuilder/AppleAppBuilder.csproj]
CSC : error CS8784: Generator 'LibraryImportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AppleAppBuilder/AppleAppBuilder.csproj]
CSC : error AD0001: Analyzer 'Microsoft.Interop.Analyzers.ConvertToLibraryImportAnalyzer' threw an exception of type 'System.TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFrameworkSettings' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.'. [/Users/filipnavara/Projects/runtime/src/tasks/AppleAppBuilder/AppleAppBuilder.csproj]
CSC : error CS8784: Generator 'VtableIndexStubGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AotCompilerTask/MonoAOTCompiler.csproj::TargetFramework=net8.0]
CSC : error CS8784: Generator 'JSExportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AotCompilerTask/MonoAOTCompiler.csproj::TargetFramework=net8.0]
CSC : error CS8784: Generator 'JSImportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AotCompilerTask/MonoAOTCompiler.csproj::TargetFramework=net8.0]
...

Could it be related?

@filipnavara

Copy link
Copy Markdown
Member

Apparently the errors went away after the next arcade version bump commit... I just happened to land in the window in-between. Sorry for the noise.

@jkoritzinsky

Copy link
Copy Markdown
MemberAuthor

Any chance you can send me the commit sha that failed? And did this fail in VS or on the command line? We shouldn't be hitting failures like that ever.

@filipnavara

Copy link
Copy Markdown
Member

Any chance you can send me the commit sha that failed?

It was 24ead90 but I cannot reproduce it anymore.

I simply woke up and tried to run ./build.sh on something that worked the day before. The only reasonable explanation is that something got restored from NuGet that caused the breakage.

@filipnavara

filipnavara commented Sep 24, 2023

Copy link
Copy Markdown
Member

Not sure what is going on but it started happening again... commit bbe5c66, macOS, running

./build.sh
./dotnet.sh test src/libraries/System.Formats.Cbor/tests -f net9.0

The build passed, but the second command did not:

CSC : error CS8784: Generator 'VtableIndexStubGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/libraries/Common/tests/TestUtilities/TestUtilities.csproj::TargetFramework=net8.0]
CSC : error CS8784: Generator 'JSExportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/libraries/Common/tests/TestUtilities/TestUtilities.csproj::TargetFramework=net8.0]
CSC : error CS8784: Generator 'JSImportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/libraries/Common/tests/TestUtilities/TestUtilities.csproj::TargetFramework=net8.0]

...and now any subsequent attempt to build (even just ./build.sh) fails.

Yesterday I deleted the full NuGet cache and dotnet installation. If you have any tips how to analyze this I would certainly appreciate it.

I had a theory why is it happening (semi-)randomly... I tend to have the root of the repository opened in VS Code, and I have the C# and C# Dev Kit extensions installed there. I though it may trigger some kind of restore that brings the repository into uncompilable state. However, closing VS Code and cleaning the repo and NuGet cache didn't help.

@filipnavara

Copy link
Copy Markdown
Member

...and the problem is gone again after machine restart. Could it be MSBuild node reuse (or Roslyn process sharing?) kicking in and hitting a shared process that has a wrong version of the library already loaded?

@jkoritzinsky

Copy link
Copy Markdown
MemberAuthor

I think node reuse might be the problem, but the builds should be isolated. If it happens again, can you email me a binlog at the email in my profile?

@filipnavara

Copy link
Copy Markdown
Member

I think node reuse might be the problem, but the builds should be isolated. If it happens again, can you email me a binlog at the email in my profile?

Sure. I tried to disable MSBuild node reuse to no effect, so I am leaning towards putting the blame on Roslyn Compiler Server. Running killall dotnet was enough to bring everything back to normal, so I use it to unblock my flow.

@ericstj

Copy link
Copy Markdown
Member

This appears to be happening because other analyzers build using the SDK's ref-pack:

<!-- Inbox analyzers shouldn't use the live targeting / runtime pack. They better depend on an LKG to avoid layering concerns. -->
<UseLocalTargetingRuntimePackCondition="'$(IsNETCoreAppAnalyzer)' == 'true'">false</UseLocalTargetingRuntimePack>

But they aren't doing anything to disable the generators from that. So the roslyn process gets a mix of the LKG generators and live built generator assemblies in process.

I think the fix here is to disable all the generators from the ref-pack.

@ghostghost locked as resolved and limited conversation to collaborators Oct 26, 2023
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@jkoritzinsky@filipnavara@ericstj@AaronRobinsonMSFT
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Refactor out TargetFramework concept from Microsoft.Interop.SourceGeneration - #92301

Merged
jkoritzinsky merged 3 commits into
dotnet:mainfrom
jkoritzinsky:disable-runtime-marshalling-stub-env
Sep 22, 2023
Merged

Refactor out TargetFramework concept from Microsoft.Interop.SourceGeneration#92301
jkoritzinsky merged 3 commits into
dotnet:mainfrom
jkoritzinsky:disable-runtime-marshalling-stub-env

Conversation

@jkoritzinsky

Copy link
Copy Markdown
Member

Refactor the concept of TargetFramework out of Micrsoft.Interop.SourceGeneration. Replace it with a CodeEmitOptions struct for us to introduce emit switches based on TFM features (in particular, the ability to skip initialization of locals was only introduced in .NET 5, so we need to have a switch for it). As all other use cases of the TFM are downlevel-support-specific in LibraryImportGenerator, move the TFM types into LibraryImportGenerator.

@ghost

Copy link
Copy Markdown

Tagging subscribers to this area: @dotnet/interop-contrib
See info in area-owners.md if you want to be subscribed.

Issue Details

Refactor the concept of TargetFramework out of Micrsoft.Interop.SourceGeneration. Replace it with a CodeEmitOptions struct for us to introduce emit switches based on TFM features (in particular, the ability to skip initialization of locals was only introduced in .NET 5, so we need to have a switch for it). As all other use cases of the TFM are downlevel-support-specific in LibraryImportGenerator, move the TFM types into LibraryImportGenerator.

Author:jkoritzinsky
Assignees:-
Labels:

area-System.Runtime.InteropServices

Milestone:9.0.0

@jkoritzinsky
jkoritzinsky merged commit f42ae88 into dotnet:mainSep 22, 2023
@jkoritzinsky
jkoritzinsky deleted the disable-runtime-marshalling-stub-env branch September 22, 2023 16:02
@filipnavara

Copy link
Copy Markdown
Member

I started getting a wall of errors on dotnet/runtime builds today:

CSC : error CS8784: Generator 'VtableIndexStubGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AppleAppBuilder/AppleAppBuilder.csproj]
CSC : error CS8784: Generator 'JSExportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AppleAppBuilder/AppleAppBuilder.csproj]
CSC : error CS8784: Generator 'JSImportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AppleAppBuilder/AppleAppBuilder.csproj]
CSC : error CS8784: Generator 'LibraryImportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AppleAppBuilder/AppleAppBuilder.csproj]
CSC : error AD0001: Analyzer 'Microsoft.Interop.Analyzers.ConvertToLibraryImportAnalyzer' threw an exception of type 'System.TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFrameworkSettings' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.'. [/Users/filipnavara/Projects/runtime/src/tasks/AppleAppBuilder/AppleAppBuilder.csproj]
CSC : error CS8784: Generator 'VtableIndexStubGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AotCompilerTask/MonoAOTCompiler.csproj::TargetFramework=net8.0]
CSC : error CS8784: Generator 'JSExportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AotCompilerTask/MonoAOTCompiler.csproj::TargetFramework=net8.0]
CSC : error CS8784: Generator 'JSImportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AotCompilerTask/MonoAOTCompiler.csproj::TargetFramework=net8.0]
...

Could it be related?

@filipnavara

Copy link
Copy Markdown
Member

Apparently the errors went away after the next arcade version bump commit... I just happened to land in the window in-between. Sorry for the noise.

@jkoritzinsky

Copy link
Copy Markdown
MemberAuthor

Any chance you can send me the commit sha that failed? And did this fail in VS or on the command line? We shouldn't be hitting failures like that ever.

@filipnavara

Copy link
Copy Markdown
Member

Any chance you can send me the commit sha that failed?

It was 24ead90 but I cannot reproduce it anymore.

I simply woke up and tried to run ./build.sh on something that worked the day before. The only reasonable explanation is that something got restored from NuGet that caused the breakage.

@filipnavara

filipnavara commented Sep 24, 2023

Copy link
Copy Markdown
Member

Not sure what is going on but it started happening again... commit bbe5c66, macOS, running

./build.sh
./dotnet.sh test src/libraries/System.Formats.Cbor/tests -f net9.0

The build passed, but the second command did not:

CSC : error CS8784: Generator 'VtableIndexStubGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/libraries/Common/tests/TestUtilities/TestUtilities.csproj::TargetFramework=net8.0]
CSC : error CS8784: Generator 'JSExportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/libraries/Common/tests/TestUtilities/TestUtilities.csproj::TargetFramework=net8.0]
CSC : error CS8784: Generator 'JSImportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/libraries/Common/tests/TestUtilities/TestUtilities.csproj::TargetFramework=net8.0]

...and now any subsequent attempt to build (even just ./build.sh) fails.

Yesterday I deleted the full NuGet cache and dotnet installation. If you have any tips how to analyze this I would certainly appreciate it.

I had a theory why is it happening (semi-)randomly... I tend to have the root of the repository opened in VS Code, and I have the C# and C# Dev Kit extensions installed there. I though it may trigger some kind of restore that brings the repository into uncompilable state. However, closing VS Code and cleaning the repo and NuGet cache didn't help.

@filipnavara

Copy link
Copy Markdown
Member

...and the problem is gone again after machine restart. Could it be MSBuild node reuse (or Roslyn process sharing?) kicking in and hitting a shared process that has a wrong version of the library already loaded?

@jkoritzinsky

Copy link
Copy Markdown
MemberAuthor

I think node reuse might be the problem, but the builds should be isolated. If it happens again, can you email me a binlog at the email in my profile?

@filipnavara

Copy link
Copy Markdown
Member

I think node reuse might be the problem, but the builds should be isolated. If it happens again, can you email me a binlog at the email in my profile?

Sure. I tried to disable MSBuild node reuse to no effect, so I am leaning towards putting the blame on Roslyn Compiler Server. Running killall dotnet was enough to bring everything back to normal, so I use it to unblock my flow.

@ericstj

Copy link
Copy Markdown
Member

This appears to be happening because other analyzers build using the SDK's ref-pack:

<!-- Inbox analyzers shouldn't use the live targeting / runtime pack. They better depend on an LKG to avoid layering concerns. -->
<UseLocalTargetingRuntimePackCondition="'$(IsNETCoreAppAnalyzer)' == 'true'">false</UseLocalTargetingRuntimePack>

But they aren't doing anything to disable the generators from that. So the roslyn process gets a mix of the LKG generators and live built generator assemblies in process.

I think the fix here is to disable all the generators from the ref-pack.

@ghostghost locked as resolved and limited conversation to collaborators Oct 26, 2023
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@jkoritzinsky@filipnavara@ericstj@AaronRobinsonMSFT
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Refactor out TargetFramework concept from Microsoft.Interop.SourceGeneration - #92301

Merged
jkoritzinsky merged 3 commits into
dotnet:mainfrom
jkoritzinsky:disable-runtime-marshalling-stub-env
Sep 22, 2023
Merged

Refactor out TargetFramework concept from Microsoft.Interop.SourceGeneration#92301
jkoritzinsky merged 3 commits into
dotnet:mainfrom
jkoritzinsky:disable-runtime-marshalling-stub-env

Conversation

@jkoritzinsky

Copy link
Copy Markdown
Member

Refactor the concept of TargetFramework out of Micrsoft.Interop.SourceGeneration. Replace it with a CodeEmitOptions struct for us to introduce emit switches based on TFM features (in particular, the ability to skip initialization of locals was only introduced in .NET 5, so we need to have a switch for it). As all other use cases of the TFM are downlevel-support-specific in LibraryImportGenerator, move the TFM types into LibraryImportGenerator.

@ghost

Copy link
Copy Markdown

Tagging subscribers to this area: @dotnet/interop-contrib
See info in area-owners.md if you want to be subscribed.

Issue Details

Refactor the concept of TargetFramework out of Micrsoft.Interop.SourceGeneration. Replace it with a CodeEmitOptions struct for us to introduce emit switches based on TFM features (in particular, the ability to skip initialization of locals was only introduced in .NET 5, so we need to have a switch for it). As all other use cases of the TFM are downlevel-support-specific in LibraryImportGenerator, move the TFM types into LibraryImportGenerator.

Author:jkoritzinsky
Assignees:-
Labels:

area-System.Runtime.InteropServices

Milestone:9.0.0

@jkoritzinsky
jkoritzinsky merged commit f42ae88 into dotnet:mainSep 22, 2023
@jkoritzinsky
jkoritzinsky deleted the disable-runtime-marshalling-stub-env branch September 22, 2023 16:02
@filipnavara

Copy link
Copy Markdown
Member

I started getting a wall of errors on dotnet/runtime builds today:

CSC : error CS8784: Generator 'VtableIndexStubGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AppleAppBuilder/AppleAppBuilder.csproj]
CSC : error CS8784: Generator 'JSExportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AppleAppBuilder/AppleAppBuilder.csproj]
CSC : error CS8784: Generator 'JSImportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AppleAppBuilder/AppleAppBuilder.csproj]
CSC : error CS8784: Generator 'LibraryImportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AppleAppBuilder/AppleAppBuilder.csproj]
CSC : error AD0001: Analyzer 'Microsoft.Interop.Analyzers.ConvertToLibraryImportAnalyzer' threw an exception of type 'System.TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFrameworkSettings' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.'. [/Users/filipnavara/Projects/runtime/src/tasks/AppleAppBuilder/AppleAppBuilder.csproj]
CSC : error CS8784: Generator 'VtableIndexStubGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AotCompilerTask/MonoAOTCompiler.csproj::TargetFramework=net8.0]
CSC : error CS8784: Generator 'JSExportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AotCompilerTask/MonoAOTCompiler.csproj::TargetFramework=net8.0]
CSC : error CS8784: Generator 'JSImportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AotCompilerTask/MonoAOTCompiler.csproj::TargetFramework=net8.0]
...

Could it be related?

@filipnavara

Copy link
Copy Markdown
Member

Apparently the errors went away after the next arcade version bump commit... I just happened to land in the window in-between. Sorry for the noise.

@jkoritzinsky

Copy link
Copy Markdown
MemberAuthor

Any chance you can send me the commit sha that failed? And did this fail in VS or on the command line? We shouldn't be hitting failures like that ever.

@filipnavara

Copy link
Copy Markdown
Member

Any chance you can send me the commit sha that failed?

It was 24ead90 but I cannot reproduce it anymore.

I simply woke up and tried to run ./build.sh on something that worked the day before. The only reasonable explanation is that something got restored from NuGet that caused the breakage.

@filipnavara

filipnavara commented Sep 24, 2023

Copy link
Copy Markdown
Member

Not sure what is going on but it started happening again... commit bbe5c66, macOS, running

./build.sh
./dotnet.sh test src/libraries/System.Formats.Cbor/tests -f net9.0

The build passed, but the second command did not:

CSC : error CS8784: Generator 'VtableIndexStubGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/libraries/Common/tests/TestUtilities/TestUtilities.csproj::TargetFramework=net8.0]
CSC : error CS8784: Generator 'JSExportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/libraries/Common/tests/TestUtilities/TestUtilities.csproj::TargetFramework=net8.0]
CSC : error CS8784: Generator 'JSImportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/libraries/Common/tests/TestUtilities/TestUtilities.csproj::TargetFramework=net8.0]

...and now any subsequent attempt to build (even just ./build.sh) fails.

Yesterday I deleted the full NuGet cache and dotnet installation. If you have any tips how to analyze this I would certainly appreciate it.

I had a theory why is it happening (semi-)randomly... I tend to have the root of the repository opened in VS Code, and I have the C# and C# Dev Kit extensions installed there. I though it may trigger some kind of restore that brings the repository into uncompilable state. However, closing VS Code and cleaning the repo and NuGet cache didn't help.

@filipnavara

Copy link
Copy Markdown
Member

...and the problem is gone again after machine restart. Could it be MSBuild node reuse (or Roslyn process sharing?) kicking in and hitting a shared process that has a wrong version of the library already loaded?

@jkoritzinsky

Copy link
Copy Markdown
MemberAuthor

I think node reuse might be the problem, but the builds should be isolated. If it happens again, can you email me a binlog at the email in my profile?

@filipnavara

Copy link
Copy Markdown
Member

I think node reuse might be the problem, but the builds should be isolated. If it happens again, can you email me a binlog at the email in my profile?

Sure. I tried to disable MSBuild node reuse to no effect, so I am leaning towards putting the blame on Roslyn Compiler Server. Running killall dotnet was enough to bring everything back to normal, so I use it to unblock my flow.

@ericstj

Copy link
Copy Markdown
Member

This appears to be happening because other analyzers build using the SDK's ref-pack:

<!-- Inbox analyzers shouldn't use the live targeting / runtime pack. They better depend on an LKG to avoid layering concerns. -->
<UseLocalTargetingRuntimePackCondition="'$(IsNETCoreAppAnalyzer)' == 'true'">false</UseLocalTargetingRuntimePack>

But they aren't doing anything to disable the generators from that. So the roslyn process gets a mix of the LKG generators and live built generator assemblies in process.

I think the fix here is to disable all the generators from the ref-pack.

@ghostghost locked as resolved and limited conversation to collaborators Oct 26, 2023
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@jkoritzinsky@filipnavara@ericstj@AaronRobinsonMSFT
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Refactor out TargetFramework concept from Microsoft.Interop.SourceGeneration - #92301

Merged
jkoritzinsky merged 3 commits into
dotnet:mainfrom
jkoritzinsky:disable-runtime-marshalling-stub-env
Sep 22, 2023
Merged

Refactor out TargetFramework concept from Microsoft.Interop.SourceGeneration#92301
jkoritzinsky merged 3 commits into
dotnet:mainfrom
jkoritzinsky:disable-runtime-marshalling-stub-env

Conversation

@jkoritzinsky

Copy link
Copy Markdown
Member

Refactor the concept of TargetFramework out of Micrsoft.Interop.SourceGeneration. Replace it with a CodeEmitOptions struct for us to introduce emit switches based on TFM features (in particular, the ability to skip initialization of locals was only introduced in .NET 5, so we need to have a switch for it). As all other use cases of the TFM are downlevel-support-specific in LibraryImportGenerator, move the TFM types into LibraryImportGenerator.

@ghost

Copy link
Copy Markdown

Tagging subscribers to this area: @dotnet/interop-contrib
See info in area-owners.md if you want to be subscribed.

Issue Details

Refactor the concept of TargetFramework out of Micrsoft.Interop.SourceGeneration. Replace it with a CodeEmitOptions struct for us to introduce emit switches based on TFM features (in particular, the ability to skip initialization of locals was only introduced in .NET 5, so we need to have a switch for it). As all other use cases of the TFM are downlevel-support-specific in LibraryImportGenerator, move the TFM types into LibraryImportGenerator.

Author:jkoritzinsky
Assignees:-
Labels:

area-System.Runtime.InteropServices

Milestone:9.0.0

@jkoritzinsky
jkoritzinsky merged commit f42ae88 into dotnet:mainSep 22, 2023
@jkoritzinsky
jkoritzinsky deleted the disable-runtime-marshalling-stub-env branch September 22, 2023 16:02
@filipnavara

Copy link
Copy Markdown
Member

I started getting a wall of errors on dotnet/runtime builds today:

CSC : error CS8784: Generator 'VtableIndexStubGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AppleAppBuilder/AppleAppBuilder.csproj]
CSC : error CS8784: Generator 'JSExportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AppleAppBuilder/AppleAppBuilder.csproj]
CSC : error CS8784: Generator 'JSImportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AppleAppBuilder/AppleAppBuilder.csproj]
CSC : error CS8784: Generator 'LibraryImportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AppleAppBuilder/AppleAppBuilder.csproj]
CSC : error AD0001: Analyzer 'Microsoft.Interop.Analyzers.ConvertToLibraryImportAnalyzer' threw an exception of type 'System.TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFrameworkSettings' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.'. [/Users/filipnavara/Projects/runtime/src/tasks/AppleAppBuilder/AppleAppBuilder.csproj]
CSC : error CS8784: Generator 'VtableIndexStubGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AotCompilerTask/MonoAOTCompiler.csproj::TargetFramework=net8.0]
CSC : error CS8784: Generator 'JSExportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AotCompilerTask/MonoAOTCompiler.csproj::TargetFramework=net8.0]
CSC : error CS8784: Generator 'JSImportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AotCompilerTask/MonoAOTCompiler.csproj::TargetFramework=net8.0]
...

Could it be related?

@filipnavara

Copy link
Copy Markdown
Member

Apparently the errors went away after the next arcade version bump commit... I just happened to land in the window in-between. Sorry for the noise.

@jkoritzinsky

Copy link
Copy Markdown
MemberAuthor

Any chance you can send me the commit sha that failed? And did this fail in VS or on the command line? We shouldn't be hitting failures like that ever.

@filipnavara

Copy link
Copy Markdown
Member

Any chance you can send me the commit sha that failed?

It was 24ead90 but I cannot reproduce it anymore.

I simply woke up and tried to run ./build.sh on something that worked the day before. The only reasonable explanation is that something got restored from NuGet that caused the breakage.

@filipnavara

filipnavara commented Sep 24, 2023

Copy link
Copy Markdown
Member

Not sure what is going on but it started happening again... commit bbe5c66, macOS, running

./build.sh
./dotnet.sh test src/libraries/System.Formats.Cbor/tests -f net9.0

The build passed, but the second command did not:

CSC : error CS8784: Generator 'VtableIndexStubGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/libraries/Common/tests/TestUtilities/TestUtilities.csproj::TargetFramework=net8.0]
CSC : error CS8784: Generator 'JSExportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/libraries/Common/tests/TestUtilities/TestUtilities.csproj::TargetFramework=net8.0]
CSC : error CS8784: Generator 'JSImportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/libraries/Common/tests/TestUtilities/TestUtilities.csproj::TargetFramework=net8.0]

...and now any subsequent attempt to build (even just ./build.sh) fails.

Yesterday I deleted the full NuGet cache and dotnet installation. If you have any tips how to analyze this I would certainly appreciate it.

I had a theory why is it happening (semi-)randomly... I tend to have the root of the repository opened in VS Code, and I have the C# and C# Dev Kit extensions installed there. I though it may trigger some kind of restore that brings the repository into uncompilable state. However, closing VS Code and cleaning the repo and NuGet cache didn't help.

@filipnavara

Copy link
Copy Markdown
Member

...and the problem is gone again after machine restart. Could it be MSBuild node reuse (or Roslyn process sharing?) kicking in and hitting a shared process that has a wrong version of the library already loaded?

@jkoritzinsky

Copy link
Copy Markdown
MemberAuthor

I think node reuse might be the problem, but the builds should be isolated. If it happens again, can you email me a binlog at the email in my profile?

@filipnavara

Copy link
Copy Markdown
Member

I think node reuse might be the problem, but the builds should be isolated. If it happens again, can you email me a binlog at the email in my profile?

Sure. I tried to disable MSBuild node reuse to no effect, so I am leaning towards putting the blame on Roslyn Compiler Server. Running killall dotnet was enough to bring everything back to normal, so I use it to unblock my flow.

@ericstj

Copy link
Copy Markdown
Member

This appears to be happening because other analyzers build using the SDK's ref-pack:

<!-- Inbox analyzers shouldn't use the live targeting / runtime pack. They better depend on an LKG to avoid layering concerns. -->
<UseLocalTargetingRuntimePackCondition="'$(IsNETCoreAppAnalyzer)' == 'true'">false</UseLocalTargetingRuntimePack>

But they aren't doing anything to disable the generators from that. So the roslyn process gets a mix of the LKG generators and live built generator assemblies in process.

I think the fix here is to disable all the generators from the ref-pack.

@ghostghost locked as resolved and limited conversation to collaborators Oct 26, 2023
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@jkoritzinsky@filipnavara@ericstj@AaronRobinsonMSFT
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Refactor out TargetFramework concept from Microsoft.Interop.SourceGeneration - #92301

Merged
jkoritzinsky merged 3 commits into
dotnet:mainfrom
jkoritzinsky:disable-runtime-marshalling-stub-env
Sep 22, 2023
Merged

Refactor out TargetFramework concept from Microsoft.Interop.SourceGeneration#92301
jkoritzinsky merged 3 commits into
dotnet:mainfrom
jkoritzinsky:disable-runtime-marshalling-stub-env

Conversation

@jkoritzinsky

Copy link
Copy Markdown
Member

Refactor the concept of TargetFramework out of Micrsoft.Interop.SourceGeneration. Replace it with a CodeEmitOptions struct for us to introduce emit switches based on TFM features (in particular, the ability to skip initialization of locals was only introduced in .NET 5, so we need to have a switch for it). As all other use cases of the TFM are downlevel-support-specific in LibraryImportGenerator, move the TFM types into LibraryImportGenerator.

@ghost

Copy link
Copy Markdown

Tagging subscribers to this area: @dotnet/interop-contrib
See info in area-owners.md if you want to be subscribed.

Issue Details

Refactor the concept of TargetFramework out of Micrsoft.Interop.SourceGeneration. Replace it with a CodeEmitOptions struct for us to introduce emit switches based on TFM features (in particular, the ability to skip initialization of locals was only introduced in .NET 5, so we need to have a switch for it). As all other use cases of the TFM are downlevel-support-specific in LibraryImportGenerator, move the TFM types into LibraryImportGenerator.

Author:jkoritzinsky
Assignees:-
Labels:

area-System.Runtime.InteropServices

Milestone:9.0.0

@jkoritzinsky
jkoritzinsky merged commit f42ae88 into dotnet:mainSep 22, 2023
@jkoritzinsky
jkoritzinsky deleted the disable-runtime-marshalling-stub-env branch September 22, 2023 16:02
@filipnavara

Copy link
Copy Markdown
Member

I started getting a wall of errors on dotnet/runtime builds today:

CSC : error CS8784: Generator 'VtableIndexStubGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AppleAppBuilder/AppleAppBuilder.csproj]
CSC : error CS8784: Generator 'JSExportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AppleAppBuilder/AppleAppBuilder.csproj]
CSC : error CS8784: Generator 'JSImportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AppleAppBuilder/AppleAppBuilder.csproj]
CSC : error CS8784: Generator 'LibraryImportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AppleAppBuilder/AppleAppBuilder.csproj]
CSC : error AD0001: Analyzer 'Microsoft.Interop.Analyzers.ConvertToLibraryImportAnalyzer' threw an exception of type 'System.TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFrameworkSettings' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.'. [/Users/filipnavara/Projects/runtime/src/tasks/AppleAppBuilder/AppleAppBuilder.csproj]
CSC : error CS8784: Generator 'VtableIndexStubGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AotCompilerTask/MonoAOTCompiler.csproj::TargetFramework=net8.0]
CSC : error CS8784: Generator 'JSExportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AotCompilerTask/MonoAOTCompiler.csproj::TargetFramework=net8.0]
CSC : error CS8784: Generator 'JSImportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AotCompilerTask/MonoAOTCompiler.csproj::TargetFramework=net8.0]
...

Could it be related?

@filipnavara

Copy link
Copy Markdown
Member

Apparently the errors went away after the next arcade version bump commit... I just happened to land in the window in-between. Sorry for the noise.

@jkoritzinsky

Copy link
Copy Markdown
MemberAuthor

Any chance you can send me the commit sha that failed? And did this fail in VS or on the command line? We shouldn't be hitting failures like that ever.

@filipnavara

Copy link
Copy Markdown
Member

Any chance you can send me the commit sha that failed?

It was 24ead90 but I cannot reproduce it anymore.

I simply woke up and tried to run ./build.sh on something that worked the day before. The only reasonable explanation is that something got restored from NuGet that caused the breakage.

@filipnavara

filipnavara commented Sep 24, 2023

Copy link
Copy Markdown
Member

Not sure what is going on but it started happening again... commit bbe5c66, macOS, running

./build.sh
./dotnet.sh test src/libraries/System.Formats.Cbor/tests -f net9.0

The build passed, but the second command did not:

CSC : error CS8784: Generator 'VtableIndexStubGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/libraries/Common/tests/TestUtilities/TestUtilities.csproj::TargetFramework=net8.0]
CSC : error CS8784: Generator 'JSExportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/libraries/Common/tests/TestUtilities/TestUtilities.csproj::TargetFramework=net8.0]
CSC : error CS8784: Generator 'JSImportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/libraries/Common/tests/TestUtilities/TestUtilities.csproj::TargetFramework=net8.0]

...and now any subsequent attempt to build (even just ./build.sh) fails.

Yesterday I deleted the full NuGet cache and dotnet installation. If you have any tips how to analyze this I would certainly appreciate it.

I had a theory why is it happening (semi-)randomly... I tend to have the root of the repository opened in VS Code, and I have the C# and C# Dev Kit extensions installed there. I though it may trigger some kind of restore that brings the repository into uncompilable state. However, closing VS Code and cleaning the repo and NuGet cache didn't help.

@filipnavara

Copy link
Copy Markdown
Member

...and the problem is gone again after machine restart. Could it be MSBuild node reuse (or Roslyn process sharing?) kicking in and hitting a shared process that has a wrong version of the library already loaded?

@jkoritzinsky

Copy link
Copy Markdown
MemberAuthor

I think node reuse might be the problem, but the builds should be isolated. If it happens again, can you email me a binlog at the email in my profile?

@filipnavara

Copy link
Copy Markdown
Member

I think node reuse might be the problem, but the builds should be isolated. If it happens again, can you email me a binlog at the email in my profile?

Sure. I tried to disable MSBuild node reuse to no effect, so I am leaning towards putting the blame on Roslyn Compiler Server. Running killall dotnet was enough to bring everything back to normal, so I use it to unblock my flow.

@ericstj

Copy link
Copy Markdown
Member

This appears to be happening because other analyzers build using the SDK's ref-pack:

<!-- Inbox analyzers shouldn't use the live targeting / runtime pack. They better depend on an LKG to avoid layering concerns. -->
<UseLocalTargetingRuntimePackCondition="'$(IsNETCoreAppAnalyzer)' == 'true'">false</UseLocalTargetingRuntimePack>

But they aren't doing anything to disable the generators from that. So the roslyn process gets a mix of the LKG generators and live built generator assemblies in process.

I think the fix here is to disable all the generators from the ref-pack.

@ghostghost locked as resolved and limited conversation to collaborators Oct 26, 2023
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@jkoritzinsky@filipnavara@ericstj@AaronRobinsonMSFT
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Refactor out TargetFramework concept from Microsoft.Interop.SourceGeneration - #92301

Merged
jkoritzinsky merged 3 commits into
dotnet:mainfrom
jkoritzinsky:disable-runtime-marshalling-stub-env
Sep 22, 2023
Merged

Refactor out TargetFramework concept from Microsoft.Interop.SourceGeneration#92301
jkoritzinsky merged 3 commits into
dotnet:mainfrom
jkoritzinsky:disable-runtime-marshalling-stub-env

Conversation

@jkoritzinsky

Copy link
Copy Markdown
Member

Refactor the concept of TargetFramework out of Micrsoft.Interop.SourceGeneration. Replace it with a CodeEmitOptions struct for us to introduce emit switches based on TFM features (in particular, the ability to skip initialization of locals was only introduced in .NET 5, so we need to have a switch for it). As all other use cases of the TFM are downlevel-support-specific in LibraryImportGenerator, move the TFM types into LibraryImportGenerator.

@ghost

Copy link
Copy Markdown

Tagging subscribers to this area: @dotnet/interop-contrib
See info in area-owners.md if you want to be subscribed.

Issue Details

Refactor the concept of TargetFramework out of Micrsoft.Interop.SourceGeneration. Replace it with a CodeEmitOptions struct for us to introduce emit switches based on TFM features (in particular, the ability to skip initialization of locals was only introduced in .NET 5, so we need to have a switch for it). As all other use cases of the TFM are downlevel-support-specific in LibraryImportGenerator, move the TFM types into LibraryImportGenerator.

Author:jkoritzinsky
Assignees:-
Labels:

area-System.Runtime.InteropServices

Milestone:9.0.0

@jkoritzinsky
jkoritzinsky merged commit f42ae88 into dotnet:mainSep 22, 2023
@jkoritzinsky
jkoritzinsky deleted the disable-runtime-marshalling-stub-env branch September 22, 2023 16:02
@filipnavara

Copy link
Copy Markdown
Member

I started getting a wall of errors on dotnet/runtime builds today:

CSC : error CS8784: Generator 'VtableIndexStubGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AppleAppBuilder/AppleAppBuilder.csproj]
CSC : error CS8784: Generator 'JSExportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AppleAppBuilder/AppleAppBuilder.csproj]
CSC : error CS8784: Generator 'JSImportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AppleAppBuilder/AppleAppBuilder.csproj]
CSC : error CS8784: Generator 'LibraryImportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AppleAppBuilder/AppleAppBuilder.csproj]
CSC : error AD0001: Analyzer 'Microsoft.Interop.Analyzers.ConvertToLibraryImportAnalyzer' threw an exception of type 'System.TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFrameworkSettings' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.'. [/Users/filipnavara/Projects/runtime/src/tasks/AppleAppBuilder/AppleAppBuilder.csproj]
CSC : error CS8784: Generator 'VtableIndexStubGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AotCompilerTask/MonoAOTCompiler.csproj::TargetFramework=net8.0]
CSC : error CS8784: Generator 'JSExportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AotCompilerTask/MonoAOTCompiler.csproj::TargetFramework=net8.0]
CSC : error CS8784: Generator 'JSImportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AotCompilerTask/MonoAOTCompiler.csproj::TargetFramework=net8.0]
...

Could it be related?

@filipnavara

Copy link
Copy Markdown
Member

Apparently the errors went away after the next arcade version bump commit... I just happened to land in the window in-between. Sorry for the noise.

@jkoritzinsky

Copy link
Copy Markdown
MemberAuthor

Any chance you can send me the commit sha that failed? And did this fail in VS or on the command line? We shouldn't be hitting failures like that ever.

@filipnavara

Copy link
Copy Markdown
Member

Any chance you can send me the commit sha that failed?

It was 24ead90 but I cannot reproduce it anymore.

I simply woke up and tried to run ./build.sh on something that worked the day before. The only reasonable explanation is that something got restored from NuGet that caused the breakage.

@filipnavara

filipnavara commented Sep 24, 2023

Copy link
Copy Markdown
Member

Not sure what is going on but it started happening again... commit bbe5c66, macOS, running

./build.sh
./dotnet.sh test src/libraries/System.Formats.Cbor/tests -f net9.0

The build passed, but the second command did not:

CSC : error CS8784: Generator 'VtableIndexStubGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/libraries/Common/tests/TestUtilities/TestUtilities.csproj::TargetFramework=net8.0]
CSC : error CS8784: Generator 'JSExportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/libraries/Common/tests/TestUtilities/TestUtilities.csproj::TargetFramework=net8.0]
CSC : error CS8784: Generator 'JSImportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/libraries/Common/tests/TestUtilities/TestUtilities.csproj::TargetFramework=net8.0]

...and now any subsequent attempt to build (even just ./build.sh) fails.

Yesterday I deleted the full NuGet cache and dotnet installation. If you have any tips how to analyze this I would certainly appreciate it.

I had a theory why is it happening (semi-)randomly... I tend to have the root of the repository opened in VS Code, and I have the C# and C# Dev Kit extensions installed there. I though it may trigger some kind of restore that brings the repository into uncompilable state. However, closing VS Code and cleaning the repo and NuGet cache didn't help.

@filipnavara

Copy link
Copy Markdown
Member

...and the problem is gone again after machine restart. Could it be MSBuild node reuse (or Roslyn process sharing?) kicking in and hitting a shared process that has a wrong version of the library already loaded?

@jkoritzinsky

Copy link
Copy Markdown
MemberAuthor

I think node reuse might be the problem, but the builds should be isolated. If it happens again, can you email me a binlog at the email in my profile?

@filipnavara

Copy link
Copy Markdown
Member

I think node reuse might be the problem, but the builds should be isolated. If it happens again, can you email me a binlog at the email in my profile?

Sure. I tried to disable MSBuild node reuse to no effect, so I am leaning towards putting the blame on Roslyn Compiler Server. Running killall dotnet was enough to bring everything back to normal, so I use it to unblock my flow.

@ericstj

Copy link
Copy Markdown
Member

This appears to be happening because other analyzers build using the SDK's ref-pack:

<!-- Inbox analyzers shouldn't use the live targeting / runtime pack. They better depend on an LKG to avoid layering concerns. -->
<UseLocalTargetingRuntimePackCondition="'$(IsNETCoreAppAnalyzer)' == 'true'">false</UseLocalTargetingRuntimePack>

But they aren't doing anything to disable the generators from that. So the roslyn process gets a mix of the LKG generators and live built generator assemblies in process.

I think the fix here is to disable all the generators from the ref-pack.

@ghostghost locked as resolved and limited conversation to collaborators Oct 26, 2023
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@jkoritzinsky@filipnavara@ericstj@AaronRobinsonMSFT
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Refactor out TargetFramework concept from Microsoft.Interop.SourceGeneration - #92301

Merged
jkoritzinsky merged 3 commits into
dotnet:mainfrom
jkoritzinsky:disable-runtime-marshalling-stub-env
Sep 22, 2023
Merged

Refactor out TargetFramework concept from Microsoft.Interop.SourceGeneration#92301
jkoritzinsky merged 3 commits into
dotnet:mainfrom
jkoritzinsky:disable-runtime-marshalling-stub-env

Conversation

@jkoritzinsky

Copy link
Copy Markdown
Member

Refactor the concept of TargetFramework out of Micrsoft.Interop.SourceGeneration. Replace it with a CodeEmitOptions struct for us to introduce emit switches based on TFM features (in particular, the ability to skip initialization of locals was only introduced in .NET 5, so we need to have a switch for it). As all other use cases of the TFM are downlevel-support-specific in LibraryImportGenerator, move the TFM types into LibraryImportGenerator.

@ghost

Copy link
Copy Markdown

Tagging subscribers to this area: @dotnet/interop-contrib
See info in area-owners.md if you want to be subscribed.

Issue Details

Refactor the concept of TargetFramework out of Micrsoft.Interop.SourceGeneration. Replace it with a CodeEmitOptions struct for us to introduce emit switches based on TFM features (in particular, the ability to skip initialization of locals was only introduced in .NET 5, so we need to have a switch for it). As all other use cases of the TFM are downlevel-support-specific in LibraryImportGenerator, move the TFM types into LibraryImportGenerator.

Author:jkoritzinsky
Assignees:-
Labels:

area-System.Runtime.InteropServices

Milestone:9.0.0

@jkoritzinsky
jkoritzinsky merged commit f42ae88 into dotnet:mainSep 22, 2023
@jkoritzinsky
jkoritzinsky deleted the disable-runtime-marshalling-stub-env branch September 22, 2023 16:02
@filipnavara

Copy link
Copy Markdown
Member

I started getting a wall of errors on dotnet/runtime builds today:

CSC : error CS8784: Generator 'VtableIndexStubGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AppleAppBuilder/AppleAppBuilder.csproj]
CSC : error CS8784: Generator 'JSExportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AppleAppBuilder/AppleAppBuilder.csproj]
CSC : error CS8784: Generator 'JSImportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AppleAppBuilder/AppleAppBuilder.csproj]
CSC : error CS8784: Generator 'LibraryImportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AppleAppBuilder/AppleAppBuilder.csproj]
CSC : error AD0001: Analyzer 'Microsoft.Interop.Analyzers.ConvertToLibraryImportAnalyzer' threw an exception of type 'System.TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFrameworkSettings' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.'. [/Users/filipnavara/Projects/runtime/src/tasks/AppleAppBuilder/AppleAppBuilder.csproj]
CSC : error CS8784: Generator 'VtableIndexStubGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AotCompilerTask/MonoAOTCompiler.csproj::TargetFramework=net8.0]
CSC : error CS8784: Generator 'JSExportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AotCompilerTask/MonoAOTCompiler.csproj::TargetFramework=net8.0]
CSC : error CS8784: Generator 'JSImportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/tasks/AotCompilerTask/MonoAOTCompiler.csproj::TargetFramework=net8.0]
...

Could it be related?

@filipnavara

Copy link
Copy Markdown
Member

Apparently the errors went away after the next arcade version bump commit... I just happened to land in the window in-between. Sorry for the noise.

@jkoritzinsky

Copy link
Copy Markdown
MemberAuthor

Any chance you can send me the commit sha that failed? And did this fail in VS or on the command line? We shouldn't be hitting failures like that ever.

@filipnavara

Copy link
Copy Markdown
Member

Any chance you can send me the commit sha that failed?

It was 24ead90 but I cannot reproduce it anymore.

I simply woke up and tried to run ./build.sh on something that worked the day before. The only reasonable explanation is that something got restored from NuGet that caused the breakage.

@filipnavara

filipnavara commented Sep 24, 2023

Copy link
Copy Markdown
Member

Not sure what is going on but it started happening again... commit bbe5c66, macOS, running

./build.sh
./dotnet.sh test src/libraries/System.Formats.Cbor/tests -f net9.0

The build passed, but the second command did not:

CSC : error CS8784: Generator 'VtableIndexStubGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/libraries/Common/tests/TestUtilities/TestUtilities.csproj::TargetFramework=net8.0]
CSC : error CS8784: Generator 'JSExportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/libraries/Common/tests/TestUtilities/TestUtilities.csproj::TargetFramework=net8.0]
CSC : error CS8784: Generator 'JSImportGenerator' failed to initialize. It will not contribute to the output and compilation errors may occur as a result. Exception was of type 'TypeLoadException' with message 'Could not load type 'Microsoft.Interop.TargetFramework' from assembly 'Microsoft.Interop.SourceGeneration, Version=42.42.42.42, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.' [/Users/filipnavara/Projects/runtime/src/libraries/Common/tests/TestUtilities/TestUtilities.csproj::TargetFramework=net8.0]

...and now any subsequent attempt to build (even just ./build.sh) fails.

Yesterday I deleted the full NuGet cache and dotnet installation. If you have any tips how to analyze this I would certainly appreciate it.

I had a theory why is it happening (semi-)randomly... I tend to have the root of the repository opened in VS Code, and I have the C# and C# Dev Kit extensions installed there. I though it may trigger some kind of restore that brings the repository into uncompilable state. However, closing VS Code and cleaning the repo and NuGet cache didn't help.

@filipnavara

Copy link
Copy Markdown
Member

...and the problem is gone again after machine restart. Could it be MSBuild node reuse (or Roslyn process sharing?) kicking in and hitting a shared process that has a wrong version of the library already loaded?

@jkoritzinsky

Copy link
Copy Markdown
MemberAuthor

I think node reuse might be the problem, but the builds should be isolated. If it happens again, can you email me a binlog at the email in my profile?

@filipnavara

Copy link
Copy Markdown
Member

I think node reuse might be the problem, but the builds should be isolated. If it happens again, can you email me a binlog at the email in my profile?

Sure. I tried to disable MSBuild node reuse to no effect, so I am leaning towards putting the blame on Roslyn Compiler Server. Running killall dotnet was enough to bring everything back to normal, so I use it to unblock my flow.

@ericstj

Copy link
Copy Markdown
Member

This appears to be happening because other analyzers build using the SDK's ref-pack:

<!-- Inbox analyzers shouldn't use the live targeting / runtime pack. They better depend on an LKG to avoid layering concerns. -->
<UseLocalTargetingRuntimePackCondition="'$(IsNETCoreAppAnalyzer)' == 'true'">false</UseLocalTargetingRuntimePack>

But they aren't doing anything to disable the generators from that. So the roslyn process gets a mix of the LKG generators and live built generator assemblies in process.

I think the fix here is to disable all the generators from the ref-pack.

@ghostghost locked as resolved and limited conversation to collaborators Oct 26, 2023
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@jkoritzinsky@filipnavara@ericstj@AaronRobinsonMSFT